使用Python处理excel表格(openpyxl)及表格中的中文处理

本文介绍如何使用Python的openpyxl库来批量处理大量的Excel (xlsx) 文件,包括读取数据、筛选、写入新文件等操作,并解决中文编码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        现在有个小任务,需要处理excel中的数据。其实就是简单的筛选,excel玩的不熟练,而且需要处理的表有70多个,于是想着写个脚本处理一下吧。

python中的openpyxl包可以轻松实现读写excel文件,下面简单介绍一下过程。

1.安装openpyxl

通过pip或者easy_install均可安装openpyxl。

openpyxl官网:https://openpyxl.readthedocs.org/en/latest/

安装命令:

pip install openpyxl
or

easy_install openpyxl
即可。


2.使用openpyxl读xlsx

加载workbook,注意,openpyxl只支持xlsx格式,老版的xls格式需要其他方法去加载。

wb = load_workbook(filename = r'tj.xlsx')


获取每个sheet的名称

sheetnames = wb.get_sheet_names() 

获得第一个sheet

ws = wb.get_sheet_by_name(sheetnames[0])


获取一个单元格的数据

c = ws['A4']
or

c = ws.cell('A4')
or

d = ws.cell(row = 4, column = 2)


一次获取多个单元格的数据

cell_range = ws['A1':'C2']
or

tuple(ws.iter_rows('A1:C2'))
or

for row in ws.iter_rows('A1:C2'):
	for cell in row:
    	<span style="white-space:pre">	</span>print cell

or

data_dic = []

for rx in range(0,ws.get_highest_row()):

	temp_list = [] 
	money = ws.cell(row = rx,column = 1).value
	kind  = ws.cell(row = rx,column = 2).value

	temp_list = [money , kind]
	#print temp_list

	data_dic.append(temp_list)

for l in data_dic:
	print l[0],l[1]

3.写入xlsx

比如数据存在上边定义的data_dic中

out_filename = r'result.xlsx'

outwb = Workbook()

ew = ExcelWriter(workbook = outwb)

ws = outwb.worksheets[0]

ws.title = "res"

i=1
for data_l in data_dic:
	for x in range(0,len(data_l)):
		#col = get_column_letter(x)
		ws.cell(column = x+1 , row = i , value = "%s" % data_l[x])
	i+=1

ew.save(filename = out_filename)


再增加一个sheet写内容

ws2 = outwb.create_sheet(title = 's2')

for data_l in data_dic:
	for x in range(0,len(data_l)):
		ws2.cell(column = x+1 , row = i , value = "%s" % data_l[x])
	i+=1

ew.save(filename = out_filename)



4.中文编码问题

表格中的值,openpyxl会自动转换为不同的类型,有些表格中会有中文出现,就需要进行相应的转码。

可以写一个函数专门处理转码,需要时调用

def gbk2utf(in_data , tag):
	if 1 == tag:
		return in_data.encode('gbk').decode('gbk')
	elif 0 == tag:
		return in_data.encode('gbk').decode('gbk').encode('utf8')


当原始的excel文件是gbk编码时,就需要tag=0的方式去处理,

因为读入后是gbk的编码,需要先encodegbkdecodeunicode,再encodeutf8,就可以显示了。


### 使用Pythonopenpyxl库读写操作Excel文件 #### 安装Openpyxl库 为了能够使用`openpyxl`来处理Excel文件,需要先安装该库。可以通过pip工具轻松完成这一过程[^1]。 ```bash pip install openpyxl ``` #### 创建新的Excel文件并保存数据 可以利用`Workbook()`函数创建一个新的工作簿对象,并通过调用其方法向其中添加数据: ```python from openpyxl import Workbook wb = Workbook() # 创建新工作簿 ws = wb.active # 获取活动的工作表 ws.title = "Sample Sheet" # 设置工作表名称 # 向单元格内输入内容 ws['A1'] = 'Hello' ws['B1'] = 'World' # 另一种方式是使用cell(row, column)方法赋值 ws.cell(row=2, column=1, value='Row') ws.cell(row=2, column=2, value='Column') # 将更改保存到磁盘上的文件 wb.save('example.xlsx') # 保存为example.xlsx文件 ``` #### 加载现有Excel文件并访问特定工作表中的数据 当要打开已有的Excel文档时,则需借助于`load_workbook()`函数加载目标文件,之后再获取所需的操作表单: ```python from openpyxl import load_workbook # 打开现有的Excel文件 wb1 = load_workbook("sample.xlsx") ws1 = wb1["Sheet1"] # 访问某个具体位置的数据 value_at_A1 = ws1['A1'].value print(f"The value at A1 is {value_at_A1}") for row in ws1.iter_rows(min_row=1, max_col=3, max_row=2): for cell in row: print(cell.value) # 修改某些单元格的内容 ws1['C3'] = 'New Value' wb1.save('modified_sample.xlsx') # 保存修改后的副本 ``` #### 遍历整个工作表以及设置样式属性 对于遍历整张表格内的所有行或列,或是调整单元格外观(比如背景色、字体),则可通过如下方式进行配置[^5]: ```python from openpyxl.styles import PatternFill, Font # 填充颜色 red_fill = PatternFill(start_color="FFCCCB", end_color="FFCCCB", fill_type="solid") # 字体加粗红色 bold_red_font = Font(bold=True, color="FF0000") # 对某一行应用上述格式化设定 row_to_style = ws1[1] for cell in row_to_style: cell.fill = red_fill cell.font = bold_red_font wb1.save('styled_example.xlsx') ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值