在python自动化中,经常会遇到对数据文件的操作,比如添加多名员工,但是直接将员工数据写在python文件中,不但工作量大,要是以后再次遇到类似批量数据操作还会写在python文件中吗?

应对这一问题,可以将数据写excel文件,针对excel 文件进行操作,完美解决。

本文仅介绍python对excel的操作

安装xlrd 库

xlrd库 官方地址:https://pypi.org/project/xlrd/

pip install xlrd

笔者在安装时使用了 pip3 install xlrd

原因:笔者同时安装了python2 和 python3

如果pip的话会默认将库安装到python2中,python3中不能直接调用。

那么到底是使用pip 还是pip3进行安装呢?

如果系统中只安装了Python2,那么就只能使用pip。

如果系统中只安装了Python3,那么既可以使用pip也可以使用pip3,二者是等价的。

如果系统中同时安装了Python2和Python3,则pip默认给Python2用,pip3指定给Python3用。

Xlrd 库简单的使用

以如下excel文件为例进行操作

文件名为demo,有两个sheet,名为工作表1和工作表2

工作表1中有如下数据

简单的使用

# coding=utf-8

import xlrd

# 打开文件

data = xlrd.open_workbook('file/demo.xlsx')

# 查看工作表

data.sheet_names()

print("sheets:" + str(data.sheet_names()))

# 通过文件名获得工作表,获取工作表1

table = data.sheet_by_name('工作表1')

# 打印data.sheet_names()可发现,返回的值为一个列表,通过对列表索引操作获得工作表1

# table = data.sheet_by_index(0)

# 获取行数和列数

# 行数:table.nrows

# 列数:table.ncols

print("总行数:" + str(table.nrows))

print("总列数:" + str(table.ncols))

# 获取整行的值 和整列的值,返回的结果为数组

# 整行值:table.row_values(start,end)

# 整列值:table.col_values(start,end)

# 参数 start 为从第几个开始打印,

# end为打印到那个位置结束,默认为none

print("整行值:" + str(table.row_values(0)))

print("整列值:" + str(table.col_values(1)))

# 获取某个单元格的值,例如获取B3单元格值

cel_B3 = table.cell(3,2).value

print("第三行第二列的值:" + cel_B3)

运行后结果

项目中使用

获得所有的数据

# coding=utf-8

import xlrd

def read_xlrd(excelFile):

data = xlrd.open_workbook(excelFile)

table = data.sheet_by_index(0)

for rowNum in range(table.nrows):

rowVale = table.row_values(rowNum)

for colNum in range(table.ncols):

if rowNum > 0 and colNum == 0:

print(int(rowVale[0]))

else:

print(rowVale[colNum])

print("---------------")

# if判断是将 id 进行格式化

# print("未格式化Id的数据:")

# print(table.cell(1, 0))

# 结果:number:1001.0

if __name__ == '__main__':

excelFile = 'file/demo.xlsx'

read_xlrd(excelFile=excelFile)

结果

如果在项目中使用则可将内容方法稍微做修改,获得所有的数据后,将每一行数据作为数组进行返回。

# coding=utf-8

import xlrd

def read_xlrd(excelFile):

data = xlrd.open_workbook(excelFile)

table = data.sheet_by_index(0)

dataFile = []

for rowNum in range(table.nrows):

# if 去掉表头

if rowNum > 0:

dataFile.append(table.row_values(rowNum))

return dataFile

if __name__ == '__main__':

excelFile = 'file/demo.xlsx'

print(read_xlrd(excelFile=excelFile))

结果:

学员实例分享:

最近需要从多个excel表里面用各种方式整理一些数据,虽然说原来用过java做这类事情,但是由于最近在学python,所以当然就决定用python尝试一下了。发现python果然简洁很多。这里简单记录一下。

一、读Excel表

1、导入模块

import xlrd

2、打开Excel文件读取数据

data = xlrd.open_workbook('excel.xls')

3、获取一个工作表

1 table = data.sheets()[0] #通过索引顺序获取

2 table = data.sheet_by_index(0) #通过索引顺序获取

3 table = data.sheet_by_name(u'Sheet1')#通过名称获取

4、获取整行和整列的值(返回数组)

table.row_values(i)

table.col_values(i)

5、获取行数和列数

table.nrows

table.ncols

6、获取单元格

table.cell(0,0).value

table.cell(2,3).value

就我自己使用的时候觉得还是获取cell最有用,这就相当于是给了你一个二维数组,余下你就可以想怎么干就怎么干了。得益于这个十分好用的库代码很是简洁。但是还是有若干坑的存在导致花了一定时间探索。现在列出来供大家参考吧:

1、首先就是我的统计是根据姓名统计各个表中的信息的,但是调试发现不同的表中各个名字貌似不能够匹配,开始怀疑过编码问题,不过后来发现是因为 空格。因为在excel中输入的时候很可能会顺手在一些名字后面加上几个空格或是tab键,这样看起来没什么差别,但是程序处理的时候这就是两个完全 不同的串了。我的解决方法是给每个获取的字符串都加上strip()处理一下。效果良好

2、还是字符串的匹配,在判断某个单元格中的字符串(中文)是否等于我所给出的的时候发现无法匹配,并且各种unicode也不太奏效,百度过一些解决 方案,但是都比较复杂或是没用。最后我采用了一个比较变通的方式:直接从excel中获取我想要的值再进行比较,效果是不错就是通用行不太好,个 呢不能问题还没解决。

二、写excel表

写excel表要用到xlwt模块,官网下载(http://pypi.python.org/pypi/xlwt)。大致使用流程如下:

1、导入模块

import xlwt

2、创建workbook(其实就是excel,后来保存一下就行)

workbook = xlwt.Workbook(encoding = 'ascii')

3、创建表

worksheet = workbook.add_sheet('My Worksheet')

4、往单元格内写入内容

worksheet.write(0, 0, label = 'Row 0, Column 0 Value')

5、保存

workbook.save('Excel_Workbook.xls')

由于我的需求比较简单,所以这上面没遇到什么问题,唯一的就是建议还是用ascii编码,不然可能会有一些诡异的现象。

当然xlwt功能远远不止这些,它甚至可以设置各种样式之类的。附上一点例子

Examples Generating Excel Documents Using Python’s xlwt

Here are some simple examples using Python’s xlwt library to dynamically generate Excel documents.

Please note a useful alternative may be ezodf, which allows you to generate ODS (Open Document Spreadsheet) files for LibreOffice / OpenOffice. You can check them out at:http://packages.python.org/ezodf/index.html

The Simplest Example

import xlwt

workbook = xlwt.Workbook(encoding = 'ascii')

worksheet = workbook.add_sheet('My Worksheet')

worksheet.write(0, 0, label = 'Row 0, Column 0 Value')

workbook.save('Excel_Workbook.xls')

Formatting the Contents of a Cell

import xlwt

workbook = xlwt.Workbook(encoding = 'ascii')

worksheet = workbook.add_sheet('My Worksheet')

font = xlwt.Font() # Create the Font

font.name = 'Times New Roman'

font.bold = True

font.underline = True

font.italic = True

style = xlwt.XFStyle() # Create the Style

style.font = font # Apply the Font to the Style

worksheet.write(0, 0, label = 'Unformatted value')

worksheet.write(1, 0, label = 'Formatted value', style) # Apply the Style to the Cell

workbook.save('Excel_Workbook.xls')

Attributes of the Font Object

font.bold = True # May be: True, False

font.italic = True # May be: True, False

font.struck_out = True # May be: True, False

font.underline = xlwt.Font.UNDERLINE_SINGLE # May be: UNDERLINE_NONE, UNDERLINE_SINGLE, UNDERLINE_SINGLE_ACC, UNDERLINE_DOUBLE, UNDERLINE_DOUBLE_ACC

font.escapement = xlwt.Font.ESCAPEMENT_SUPERSCRIPT # May be: ESCAPEMENT_NONE, ESCAPEMENT_SUPERSCRIPT, ESCAPEMENT_SUBSCRIPT

font.family = xlwt.Font.FAMILY_ROMAN # May be: FAMILY_NONE, FAMILY_ROMAN, FAMILY_SWISS, FAMILY_MODERN, FAMILY_SCRIPT, FAMILY_DECORATIVE

font.charset = xlwt.Font.CHARSET_ANSI_LATIN # May be: CHARSET_ANSI_LATIN, CHARSET_SYS_DEFAULT, CHARSET_SYMBOL, CHARSET_APPLE_ROMAN, CHARSET_ANSI_JAP_SHIFT_JIS, CHARSET_ANSI_KOR_HANGUL, CHARSET_ANSI_KOR_JOHAB, CHARSET_ANSI_CHINESE_GBK, CHARSET_ANSI_CHINESE_BIG5, CHARSET_ANSI_GREEK, CHARSET_ANSI_TURKISH, CHARSET_ANSI_VIETNAMESE, CHARSET_ANSI_HEBREW, CHARSET_ANSI_ARABIC, CHARSET_ANSI_BALTIC, CHARSET_ANSI_CYRILLIC, CHARSET_ANSI_THAI, CHARSET_ANSI_LATIN_II, CHARSET_OEM_LATIN_I

font.colour_index = ?

font.get_biff_record = ?

font.height = 0x00C8 # C8 in Hex (in decimal) = 10 points in height.

font.name = ?

font.outline = ?

font.shadow = ?

Setting the Width of a Cell

import xltw

workbook = xlwt.Workbook()

worksheet = workbook.add_sheet('My Sheet')

worksheet.write(0, 0, 'My Cell Contents')

worksheet.col(0).width = 3333 # 3333 = 1" (one inch).

workbook.save('Excel_Workbook.xls')

Entering a Date into a Cell

import xlwt

import datetime

workbook = xlwt.Workbook()

worksheet = workbook.add_sheet('My Sheet')

style = xlwt.XFStyle()

style.num_format_str = 'M/D/YY' # Other options: D-MMM-YY, D-MMM, MMM-YY, h:mm, h:mm:ss, h:mm, h:mm:ss, M/D/YY h:mm, mm:ss, [h]:mm:ss, mm:ss.0

worksheet.write(0, 0, datetime.datetime.now(), style)

workbook.save('Excel_Workbook.xls')

Adding a Formula to a Cell

import xlwt

workbook = xlwt.Workbook()

worksheet = workbook.add_sheet('My Sheet')

worksheet.write(0, 0, 5) # Outputs 5

worksheet.write(0, 1, 2) # Outputs 2

worksheet.write(1, 0, xlwt.Formula('A1*B1')) # Should output "10" (A1[5] * A2[2])

worksheet.write(1, 1, xlwt.Formula('SUM(A1,B1)')) # Should output "7" (A1[5] + A2[2])

workbook.save('Excel_Workbook.xls')

Adding a Hyperlink to a Cell

import xlwt

workbook = xlwt.Workbook()

worksheet = workbook.add_sheet('My Sheet')

worksheet.write(0, 0, xlwt.Formula('HYPERLINK("http://www.google.com";"Google")')) # Outputs the text "Google" linking to http://www.google.com

workbook.save('Excel_Workbook.xls')

Merging Columns and Rows

import xlwt

workbook = xlwt.Workbook()

worksheet = workbook.add_sheet('My Sheet')

worksheet.write_merge(0, 0, 0, 3, 'First Merge') # Merges row 0's columns 0 through 3.

font = xlwt.Font() # Create Font

font.bold = True # Set font to Bold

style = xlwt.XFStyle() # Create Style

style.font = font # Add Bold Font to Style

worksheet.write_merge(1, 2, 0, 3, 'Second Merge', style) # Merges row 1 through 2's columns 0 through 3.

workbook.save('Excel_Workbook.xls')

Setting the Alignment for the Contents of a Cell

import xlwt

workbook = xlwt.Workbook()

worksheet = workbook.add_sheet('My Sheet')

alignment = xlwt.Alignment() # Create Alignment

alignment.horz = xlwt.Alignment.HORZ_CENTER # May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED

alignment.vert = xlwt.Alignment.VERT_CENTER # May be: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED

style = xlwt.XFStyle() # Create Style

style.alignment = alignment # Add Alignment to Style

worksheet.write(0, 0, 'Cell Contents', style)

workbook.save('Excel_Workbook.xls')

Adding Borders to a Cell

# Please note: While I was able to find these constants within the source code, on my system (using LibreOffice,) I was only presented with a solid line, varying from thin to thick; no dotted or dashed lines.

import xlwt

workbook = xlwt.Workbook()

worksheet = workbook.add_sheet('My Sheet')

borders = xlwt.Borders() # Create Borders

borders.left = xlwt.Borders.DASHED # May be: NO_LINE, THIN, MEDIUM, DASHED, DOTTED, THICK, DOUBLE, HAIR, MEDIUM_DASHED, THIN_DASH_DOTTED, MEDIUM_DASH_DOTTED, THIN_DASH_DOT_DOTTED, MEDIUM_DASH_DOT_DOTTED, SLANTED_MEDIUM_DASH_DOTTED, or 0x00 through 0x0D.

borders.right = xlwt.Borders.DASHED

borders.top = xlwt.Borders.DASHED

borders.bottom = xlwt.Borders.DASHED

borders.left_colour = 0x40

borders.right_colour = 0x40

borders.top_colour = 0x40

borders.bottom_colour = 0x40

style = xlwt.XFStyle() # Create Style

style.borders = borders # Add Borders to Style

worksheet.write(0, 0, 'Cell Contents', style)

workbook.save('Excel_Workbook.xls')

Setting the Background Color of a Cell

import xlwt

workbook = xlwt.Workbook()

worksheet = workbook.add_sheet('My Sheet')

pattern = xlwt.Pattern() # Create the Pattern

pattern.pattern = xlwt.Pattern.SOLID_PATTERN # May be: NO_PATTERN, SOLID_PATTERN, or 0x00 through 0x12

pattern.pattern_fore_colour = 5 # May be: 8 through 63. 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan, 16 = Maroon, 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow , almost brown), 20 = Dark Magenta, 21 = Teal, 22 = Light Gray, 23 = Dark Gray, the list goes on...

style = xlwt.XFStyle() # Create the Pattern

style.pattern = pattern # Add Pattern to Style

worksheet.write(0, 0, 'Cell Contents', style)

workbook.save('Excel_Workbook.xls')

TODO: Things Left to Document

- Panes -- separate views which are always in view

- Border Colors (documented above, but not taking effect as it should)

- Border Widths (document above, but not working as expected)

- Protection

- Row Styles

- Zoom / Manification

- WS Props?

Source Code for reference available at: https://secure.simplistix.co.uk/svn/xlwt/trunk/xlwt/

上面这个例子是一个想学习Python办公自动化这块的一个案例分享,内容比较简单,非常容易上手,大家感兴趣的可以在评论区留言或者讨论。

当然,关注点赞+评论:学习,找我领取一些这方面的书籍和视频教程,可以作为福利分享给大家!

文章分享希望对大家有所帮助,感谢支持!喜欢的关注我主页会分享更多的干货知识,我是进击程序员,喜欢的点个赞吧!

cdatabase读取excel第一行数据_“蟒蛇”py对Excel的读取——数据操作用它,老板都得重新认识你...相关推荐

  1. python第一行代码_“少年py”001:下载Python软件,写第一行代码

    Python,网络上称之为人工智能时代的第一编程语言. 功能超级强大,能做科学计算.大数据处理.网络爬虫.游戏开发等等. 但是说实话,彬哥玩Python还没到这么厉害的程度,究竟怎么实现,我们不着急, ...

  2. excel 多行插入_在Excel中插入多行

    excel 多行插入 If you've used Excel for a while, you have lots of skills that you might assume everyone ...

  3. EXCEL自动填充列索引号EXCEL的列求和、行求和EXCEL第一行锁定WORD行间距规整EXCEL快速筛选WORD画流程图

    (1)自动填充列索引号 有时电子表格的第一列有个INDEX标识更好阅读,此时只要添加一列,往里面补上序号即可.有个简单的补号的操作是:点击第一个方格,把鼠标放在它的右下角,出现一个黑十字(不带箭头), ...

  4. python删除excel第一行_如何用 Python 清洗数据?

    林骥的第 38 篇文章 0. 序言在做数据分析之前,我们首先要明确数据分析的目标,然后应用数据分析的思维,对目标进行细分,再采取相应的行动.我们可以把数据分析细分为以下 8 个步骤:(1)读取(2)清 ...

  5. bootstraptable 怎么在特定行添加数据_手把手教你做一个“渣”数据师,用Python代替老情人Excel...

    大数据文摘出品 来源:medium 编译:张大笔茹 十年前,你说你是做数据的,大家的反应就是 -- 用 Excel 做做表. 现在,要成为一个合格的数据分析师,你说你不会 Python,大概率会被江湖 ...

  6. [DAY3]用VBA实现复制EXCEL第一行数据到最后一行

    #跟着文心一言学VBA Sub CopyA1ToLastRow()Dim lastRow As Long'Rows.Count是指当前活动工作表的行数,为数字 1048576,是Excel工作表的最大 ...

  7. python excel增加一列_(用Python修改excel中一列数据)python新增一列

    python怎么从excel中读取数据? ⒈ #import παέτο import xlrd #Ρύθμι διαδρής path='C:\\Users\\jyjh\\Desktop\\data ...

  8. excel统计行数_工程人常用的12个excel和9个wps技巧

    点击上方蓝字,记得关注我们! 搞工程的人要干的事,不只局限于在现场严格按照标准监督施工进行,还需要同时对收集到的资料进行收集整理,搞搞内业工作.然而很多人都是新上手,难免会对某些办公软件有些生涩. E ...

  9. python numpy读取数据_大神教你python 读取文件并把矩阵转成numpy的两种方法

    导读 今天小编就为大家分享一篇python 读取文件并把矩阵转成numpy的两种方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 在当前目录下: 方法1: file = open( ...

最新文章

  1. SAP LSMW 因物料描述里有换行符或者引号导致数据导入失败
  2. python函数文档说明调用方式_Python 跨.py文件调用自定义函数说明
  3. python回溯算法_什么是回溯法,Python解法交流?
  4. 线性表----单链表
  5. elasticsearch 6.x.x 获取客户端方法
  6. jconsole查看连接数_在JConsole和VisualVM中查看DiagnosticCommandMBean
  7. 透视变换矩阵(单应矩阵)计算:findHomography 与 getPerspectiveTransform
  8. 校/院级虚拟仿真实验教学平台ilab-x接口版本对接文档
  9. android mediastore指定前置摄像头,Intent方式打开前置摄像头
  10. 【MAC】有道笔记登陆不了,刷新不出登陆
  11. 跟着老万学linux运维-vi编辑器中的大小写转换技巧
  12. 为什么不想做产品经理
  13. Java实现蓝桥杯单位转换
  14. PHP 递归函数的理解
  15. 液晶显示器电源板工作原理
  16. HTB-baby BoneChewerCon
  17. WEKA算法解析 -- PART决策树
  18. 实习技术员的基本功(二)
  19. MATLAB中interp2参数使用指南
  20. php收入表,PHP原生-个人收支记账系统

热门文章

  1. mybatis基础综合/常见面试题
  2. 转载 - sql分页优化
  3. html元素的分类有哪些?
  4. JEECG支付宝服务窗开发培训视频
  5. Python jquery标签云
  6. bash shell命令(2)
  7. 常见面试题学习(1)
  8. hdu 1075 (字典树映射)
  9. Redis 分布式锁没这么简单,网上大多数都有 bug
  10. 同时拿到BATJMD的Offer是怎样的一种体验?