Excel处理
- 2026-11-02 19:31:37
Excel处理
"""任务:处理Excel文件场景:从Excel导入数据"""# 需要安装: pip install openpyxlimport openpyxl# Python 最常用的 Excel 处理库,处理 .xlsx 文件try:import openpyxldef excel_to_documents(filepath: str, sheet_name=None, text_columns=None):"""从Excel提取文档目标:把 Excel → 字典列表"""wb = openpyxl.load_workbook(filepath)if sheet_name:ws = wb[sheet_name] # 选工作表else:ws = wb.activedocuments = []headers = [cell.value for cell in ws[1]] # 第一行作为表头for row in ws.iter_rows(min_row=2, values_only=True):doc = {}for header, value in zip(headers, row):if text_columns is None or header in text_columns:doc[header] = valueif doc:documents.append(doc)return documentsdef create_excel_report(data: dict, filepath: str):"""创建Excel报告,把数据 → 写入 Excel"""wb = openpyxl.Workbook() # 新建一个空白工作簿(内存中)for sheet_name, rows in data.items():if sheet_name in wb.sheetnames:ws = wb[sheet_name]else:ws = wb.create_sheet(sheet_name)for row_data in rows:ws.append(row_data)# 删除默认sheetif 'Sheet' in wb.sheetnames:wb.remove(wb['Sheet'])wb.save(filepath)# 测试wb = openpyxl.Workbook()ws = wb.activews.append(["ID", "Content", "Category"])ws.append([1, "First doc", "A"])ws.append([2, "Second doc", "B"])wb.save("test.xlsx")docs = excel_to_documents("test.xlsx", text_columns=["Content"])assert len(docs) == 2print("✅ Excel处理测试通过")except ImportError:print("⚠️ openpyxl未安装,跳过Excel测试")
一、场景
读取 Excel → 转成 Python 字典(给 AI / 程序用),
Python 数据 → 写入 Excel(生成报表),用于数据导入导出等。
二、个人理解/最初卡在哪里
for row in ws.iter_rows(min_row=2, values_only=True)安全、高效、逐行读取 Excel 数据,从第 2 行开始,循环每一行,values_only=True → 只取值。返回值是一行一行的元组。
简单读写用 openpyxl, 复杂分析用 pandas。
三、代码中的关键洞察
读取 Excel 的套路:
第一行 = 表头(做字典 key)
从第二行开始 = 真实数据
zip (表头,行) → 自动变成字典
写入 Excel 的套路:
data = {工作表名: [行 1, 行 2, 行 3]}
循环 sheet → 不存在就创建 → 逐行 append
最后删除默认空 Sheet
text_columns 实现 “只读取需要的列”,过滤无用列,轻量干净。
四、关键代码/可复用片段
1. Excel 读取
import openpyxldef read_excel(filepath, sheet_name=None):wb = openpyxl.load_workbook(filepath)ws = wb[sheet_name] if sheet_name else wb.activeheaders = [c.value for c in ws[1]]docs = []for row in ws.iter_rows(min_row=2, values_only=True):doc = dict(zip(headers, row))docs.append(doc)return docs
2. Excel 写入
def write_excel(data, filepath):wb = openpyxl.Workbook()for sheet, rows in data.items():ws = wb.create_sheet(sheet)for r in rows:ws.append(r)if 'Sheet' in wb.sheetnames:wb.remove(wb['Sheet'])wb.save(filepath)
本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。