前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python3操作Excel (一)

python3操作Excel (一)

作者头像
py3study
发布2020-01-06 09:51:38
9030
发布2020-01-06 09:51:38
举报
文章被收录于专栏:python3python3

#第一篇: ##openpyxl 模块使用:

安装: pip install openpyxl

excel表中有图像,需要安装pillow库。 pip install Pillow

代码:

代码语言:javascript
复制
   from openpyxl import Workbook
    wb = Workbook()

    # grab the active worksheet
    ws = wb.active

    # Data can be assigned directly to cells
    ws['A1'] = 42

    # Rows can also be appended
    ws.append([1, 2, 3])

    # Python types will automatically be converted
    import datetime
    ws['A2'] = datetime.datetime.now()

    # Save the file
    wb.save("sample.xlsx")

openpyxl模块使用:

创建一个工作簿:

代码语言:javascript
复制
from openpyxl import Workbook
wb = Workbook() 

工作簿最少有一个工作表: openpyxl.workbook.Workbook.active()

代码语言:javascript
复制
ws = wb.active

wb的_active_sheet_index 属性,默认情况下为0.来获取第一个工作表。 修改值之后,可以获取该值对应的工作表。

也可以创建一个新的工作表,需要使用openpyxl.workbook.Workbook.create_sheet() method

// 添加一个新的工作表:

代码语言:javascript
复制
#在默认工作表后面创建一个新的工作表。
ws1 = wb.create_sheet("twosheet")

#在默认工作表前面创建一个新的工作表。0 为索引值。
ws2 = wb.create_sheet('onesheet',0)

在创建工作表时,默认自动命名sheet1,sheet2,...

可使用title属性更改sheet1,sheet2,....等名称。 例如:

代码语言:javascript
复制
ws1.title = "2sheet"

默认情况下,title的背景颜色为白色,可更改为: 可以将此提供RRGGBB颜色代码更改为sheet_properties.tabColor属性: 该效果我没有做出来,有待研究。

代码语言:javascript
复制
ws.sheet_properties.tabColor = "1072BA"

你可以把一个创建之后的工作表的名字,作为工作簿的一个键。

代码语言:javascript
复制
ws3 = wb['onesheet']
print(ws3)

输出值为: <Worksheet "onesheet">

说明你可以选择使用哪个工作表来写入数据。

查看工作簿的所有工作表的名称: openpyxl.workbook.Workbook.sheetnames() property

代码语言:javascript
复制
print(wb.sheetnames)  #打印出来为list。

可以选择循环浏览工作表名称: for sheet in wb: print(type(sheet.title)) print(sheet.title) #打印出来为str.

可以在单个工作簿中创建工作表副本: openpyxl.workbook.Workbook.copy_worksheet() method: source = wb.active target = wb.copy_worksheet(source) #默认将工作表添加到末尾。

  • 注意:

只有单元格(包括值,样式,超链接和注释)和某些工作表属性(包括尺寸,格式和属性)被复制。所有其他工作簿/工作表属性不会被复制 - 例如图片,图表。 您不能在工作簿之间复制工作表。如果工作簿以只读或只写模式打开,您也无法复制工作表。

####插入数据 访问单元格并修改单元格内容:

单元格可以作为工作表的键直接访问。

代码语言:javascript
复制
ws = wb['Sheet']
print(ws)

注意: 访问之前,必须先让其工作在Sheet工作表上。 c = ws['A4'] print(c)

这将返回A4处的单元格或创建一个,如果它尚不存在。值可以直接分配:

代码语言:javascript
复制
ws['A4'] = 4

还有 openpyxl.worksheet.Worksheet.cell() method.

这使用行和列表示法提供对单元格的访问权限:

代码语言:javascript
复制
d = ws.cell(row=4,column=2,value=10)
print(type(d))
print(d)

注意: 当工作表在内存中创建时,它不包含单元格。它们在第一次访问时创建。

由于这个特性,即使没有为它们赋值,通过滚动单元格而不是直接访问它们也会在内存中创建它们。

代码语言:javascript
复制
for i in range(1,101):
for j in range(1,101):
    ws.cell(row=i,column=j)
    print(type(j))
    print(j)
#将在内存中创建100x100的单元格,无需任何操作。

可以使用切片访问单元格的范围:

代码语言:javascript
复制
cell_range = ws['A1':'C2']
print(type(cell_range))
print(cell_range)
#type is tuple.

行或列的范围可以类似地获得:

代码语言:javascript
复制
colC = ws['C']
col_range = ws['C:D']
row10 = ws[10]
row_range = ws[5:10]

也可以用: openpyxl.worksheet.Worksheet.iter_rows() method:

代码语言:javascript
复制
for row in ws.iter_rows(min_row=1,max_col=3,max_row=2):
for cell in row:
    print(cell)

openpyxl.worksheet.Worksheet.iter_cols() method will return columns:

代码语言:javascript
复制
for col in ws.iter_rows(min_row=1,max_col=3,max_row=2):
for cell in col:
    print(cell)

需要遍历文件的所有行或列,使用 openpyxl.worksheet.Worksheet.rows() property:

代码语言:javascript
复制
#遍历文件的所有行
ws = wb.active
ws['C9'] = 'li yuan jie'
print(tuple(ws.rows))

or use openpyxl.worksheet.Worksheet.columns() property:

代码语言:javascript
复制
#遍历文件的所有列:
ws = wb.active
ws['C9'] = 'li yuan jie'
print(tuple(ws.columns))

#####Data storage openpyxl.cell.Cell, we can assign it a value:

代码语言:javascript
复制
c = ws['A1']    #指定A1单元格
c.value = 'li yuan jie'
print(c.value)

d = ws['B1']
d.value = 3.14
print(d.value)

也可以启用类型和格式推断:

代码语言:javascript
复制
c = ws['A2']
c.value = '12%'
print(type(c.value))  #type is str
print(c.value)

import datetime
d = ws['B2']
d.value = datetime.datetime.now()  
print(type(d.value))  #type is 'datetime.datetime'
print(d.value)

c.value = '31.50'
print(type(c.value))   #type is str
print(c.value)

Saving to a file The simplest and safest way to save a workbook is by using the: openpyxl.workbook.Workbook.save() method of the openpyxl.workbook.Workbook object:

代码语言:javascript
复制
wb = Workbook()
wb.save('onepyxl.xlsx')

注意: 此操作将覆盖现有文件。

可以指定属性template = True,将工作簿保存为模板:

代码语言:javascript
复制
wb = load_workbook('document.xlsx')
wb.template = True
wb.save('document_template.xltx')

或将此属性设置为False(默认),以另存为文档: wb = load_workbook('document_template.xltx') wb.template = False wb.save('document.xlsx', as_template=False)

注意: excel表的数据属性和扩展名。

####加载一个文件 导入 openpyxl.load_workbook() to open an existing workbook:

代码语言:javascript
复制
from openpyxl import load_workbook
wb2 = load_workbook('onepyxl.xlsx')
print(wb2.sheetnames)

如有不足之处,请指正。

参考: https://openpyxl.readthedocs.io/en/latest/ https://openpyxl.readthedocs.io/en/2.5/

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档