python创建xlsx文件_python操作xlsx文件

在网上浏览了一下,比较了一下,python使用openpyxl库处理xlsx文件是比较好的选择。

目录:

安装

pip install openpyxl

基本使用

基本的使用主要涉及以下三个模块:

c9a59d9e9e95?from=singlemessage

openpyxl主要模块

读取文件

导入load_workbook方法

from openpyxl import load_workbook

导入文件获取workbook

wb = load_workbook('file_name')

获取worksheet

根据sheet名称获取

ws = wb['sheet_name']

遍历sheet获取

for sheet in wb:

... ...

操作完成后注意关闭workbook: wb.close()

操作数据

获取worksheet后,获取其中的数据:

批量获取

获取指定行

sheet[1]

输入所需行号:1, 2 ,3, ...

获取指定列

sheet['A']

输入所需列标:'A', 'B', 'C', ...

获取指定单元格

sheet['A1']

获取指定范围的单元格

sheet['A2:D2'] # 获取行

sheet['A2:A4'] # 获取列

sheet['A1:D4'] # 获取4行4列

注意:通过这样的方式得到的元素是个二元组

操作cell

获取值: cell.value

注意:空单元格值为None

获取cell所在行: cell.row

获取cell所在列:cell.column

添加数据

添加行

末尾增加一行

ws.append(['cell1', 'cell 2'])

指定位置插入一行

ws.insert_rows(7)

for cell in ws[7]:

cell.value = 'cell value'

添加列

指定位置插入列

ws.insert_cols(2)

for i in ws.max_row:

cell = ws.cell(i, 2)

cell.value = 'cell value'

删除数据

删除指定行

ws.delete_rows(2)

删除指定列

ws.delete_cols(2)

写入到文件

data = [

["Fruit", "Quantity"],

["Kiwi", 3],

["Grape", 15],

["Apple", 3]

]

wb = Workbook()

ws = wb.active

for r in date:

ws.append(r)

wb.save('file_name')

写入文件的数据是二维数组;

使用worksheet.append(),填加一行内容,内容是一个数组;

save()方法会以'w'的模式去写入文件,注意覆盖的问题。

为单元格添加样式

该例只添加单元格的底色:

导入PatternFill

from openpyxl.styles import PatternFill

创建填充实例

style = PatternFill("solid", fgColor="E2EFDA")

填充单元格

cell.fill = style

保存更改

wb.save(path)

例子

有时候期望填充一行而不是单个单元格,则可以进行如下操作:

from openpyxl import Workbook, load_workbook

from openpyxl.styles import PatternFill

path = './test.xlsx'

wb = load_workbook(filename=path)

ws = wb['Sheet1']

style = PatternFill("solid", fgColor="E2EFDA")

for cell in ws[1]:

cell.fill = style

wb.save(path)

wb.close() // maybe Unnecessary

从xlsx中导入数据

from openpyxl import load_workbook

def import_data(file_path: str, sheets=[]):

wb = load_workbook(file_path)

if not sheets:

sheets = wb.sheetnames

for sheet in sheets:

print(f'--- begin execute [{sheet}]')

ws = wb[sheet]

rows = ws.values

header = next(rows)

print(f'|-- header: {header}')

user = dict()

for row in rows:

for i, h in enumerate(header):

if h == '姓名':

user['name'] = row[i]

......

# save user or do further operations

常用方法

workbook module常用属性

sheetnames:获取工作表名称列表

worksheet module 常用属性

dimensions:返回包含数据的所有单元格的最小边界范围

TODO: 不清楚会不会自动忽略空值行

max_column:包含数据的最大列数

max_row:包含数据的最大行数

values:按行获取所有单元格的值,返回一个生成器

cell model 常用属性

row:单元格的行号(从1开始)

column:单元格的列索引字母(从A开始)

col_idx:单元格的列号(从1开始)

column_letter:单元格的字母索引(A, B, ...)

coordinate: 单元格的坐标(比如:A1)

parent:单元格所在的worksheet

data_type:单元格值的类型

TYPE_STRING = 's'

TYPE_FORMULA = 'f'

TYPE_NUMERIC = 'n'

TYPE_BOOL = 'b'

TYPE_NULL = 'n'

TYPE_INLINE = 'inlineStr'

TYPE_ERROR = 'e'

TYPE_FORMULA_CACHE_STRING = 'str'

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值