如何使用openpyxl将Python列表导出为Excel文件?
使用openpyxl导出修改后的数据到新Excel文件
首先你当前的导入代码存在一个问题:把字典转成字符串存入out_data,这会导致后续修改数据非常麻烦。建议先调整导入逻辑,直接存储可操作的数据结构(比如字典列表或列表的列表),示例如下:
修正后的导入代码(字典列表形式)
from openpyxl import load_workbook path = "xyz" l_data = load_workbook(path) sheet = l_data.active c_row = sheet.max_row c_column = sheet.max_column out_data = [] for a in range(1, c_row + 1): row_dict = {} for b in range(1, c_column + 1): ob = sheet.cell(row=a, column=b) row_dict[b] = ob.value out_data.append(row_dict) # 直接存储字典,不转字符串 # 这里模拟对out_data的修改,比如修改第一行第一列的值 out_data[0][1] = "修改后的值"
导出修改后的数据到新Excel
接下来用openpyxl创建新工作簿,将修改后的out_data写入并保存:
from openpyxl import Workbook # 创建新工作簿并获取活动工作表 wb = Workbook() ws = wb.active # 遍历数据,逐单元格写入 for row_idx, row_data in enumerate(out_data, start=1): for col_idx, value in row_data.items(): ws.cell(row=row_idx, column=col_idx, value=value) # 保存新文件 wb.save("修改后的文件.xlsx")
更简洁的列表列表方案
如果觉得字典形式繁琐,也可以用列表的列表存储数据,导入和导出代码会更简洁:
导入代码
from openpyxl import load_workbook path = "xyz" l_data = load_workbook(path) sheet = l_data.active c_row = sheet.max_row c_column = sheet.max_column out_data = [] for a in range(1, c_row + 1): row_list = [] for b in range(1, c_column + 1): row_list.append(sheet.cell(row=a, column=b).value) out_data.append(row_list) # 模拟修改,比如修改第二行第三列(索引从0开始) out_data[1][2] = "新内容"
导出代码
from openpyxl import Workbook wb = Workbook() ws = wb.active # 直接逐行添加数据 for row in out_data: ws.append(row) wb.save("修改后的文件.xlsx")
内容的提问来源于stack exchange,提问作者Ken
相关产品推荐
相关产品推荐

