前面已经写过 一篇 Python 对 excel 文件的处理,需要的可以参考学习,本篇文章主要是记录我实际操作时的一些问题。
文章目录
-
- 一、我的需求
- 二、代码
- 三、总结
一、我的需求
我想要excel 的最后1列由列表形式转换为数值类型
可以看到最后一列有的是列表,有的直接是数值,想要整个列表中的内容都转为数值类型
二、代码
import openpyxl
def write_excel_xlsx():
# 写入数据准备
workbook = openpyxl.Workbook()
sheet = workbook.active
sheet.title = "优化后的参数"
# 记录写的行数
write_row = 0
# 首先从excel中读取数据
work_read = openpyxl.load_workbook("样本优化.xlsx")
sheet_read = work_read["优化后的参数"]
# 将表中的所有行转换为列表
rows_data = list(sheet_read.rows)
# 逐行读取
for row in rows_data:
for i in range(len(row)):
value = row[i].value
if isinstance(value, str):
sheet.cell(row=write_row + 1, column=i + 1, value=str(value[1:len(value) - 1]))
else:
sheet.cell(row=write_row + 1, column=i + 1, value=str(value))
write_row = write_row + 1
workbook.save("样本优化-处理.xlsx")
print("xlsx格式表格写入数据成功!")
write_excel_xlsx()
三、总结
- 将表中的所有行转换为列表
# 将表中的所有行转换为列表
rows_data = list(sheet_read.rows)
这一步挺重要,因为后面我们对具体的列数操作,这样转换更方便
- 那个列表在excel中是字符串的形式,所以需要对其单独进行判断
if isinstance(value, str):
sheet.cell(row=write_row + 1, column=i + 1, value=str(value[1:len(value) - 1]))
else:
sheet.cell(row=write_row + 1, column=i + 1, value=str(value))
- 对这个行数需要注意,处理完一行需要对其递增