写一个批量提取多个电子发票中的产品名称和金额的批量程序,发票地址I:\Alarms\1\24
时间: 2025-06-25 10:22:29 浏览: 9
要编写一个批量提取多个电子发票中的产品名称和金额的程序,可以按照以下步骤进行:
### 程序设计思路
1. **读取文件**:从指定路径 `I:\Alarms\1\24` 中获取所有需要处理的电子发票文件。
2. **解析内容**:对每一份发票文件的内容进行分析,查找并提取所需信息(如“产品名称”、“金额”等)。
3. **数据存储**:将提取到的信息保存下来,例如存入Excel表格、CSV文本或其他数据库形式中。
以下是基于Python语言的一个简单示例框架代码:
```python
import os
from openpyxl import Workbook # 导出结果为xlsx格式需要用到此库
# 定义函数用于搜索关键字及其对应值(这里简化假设)
def extract_info(file_content):
info = {}
if "产品名称" in file_content:
start_index = file_content.find("产品名称") + len("产品名称")
end_index = file_content[start_index:].find("\n") + start_index
product_name = file_content[start_index:end_index].strip()
info["product"] = product_name
if "金额" in file_content:
amount_start = file_content.find("金额") + len("金额")
amount_end = file_content[amount_start:].find("\n") + amount_start
amount_value = file_content[amount_start:amount_end].replace('元', '').strip()
try:
info['amount'] = float(amount_value)
except ValueError as e:
print(f"转换金额失败:{e}")
return info
if __name__ == "__main__":
path_to_invoices = r"I:\Alarms\1\24"
result_list = []
for filename in os.listdir(path_to_invoices):
with open(os.path.join(path_to_invoices, filename), 'r') as f:
content = f.read() # 假设文件较小一次性全部加载
extracted_data = extract_info(content)
if not any(extracted_data.values()): continue
result_list.append({
"filename": filename,
**extracted_data})
# 创建工作簿并添加sheet页导出excel表
wb = Workbook()
ws = wb.active
headers=['发票名','产品名称','金额']
ws.append(headers)
for row_item in result_list:
values=[row_item.get(key,'未知字段')for key in ['filename','product','amount']]
ws.append(values)
save_file_path=os.path.expanduser("~/Desktop/invoice_summary.xlsx")
wb.save(save_file_path)
```
---
该脚本仅作示范用途,在实际应用前需针对目标文档的具体结构进一步调整正则表达式匹配规则或者其他更复杂的数据抽取算法。同时注意检查输入源是否包含敏感财务资料,并妥善管理访问权限及加密传输机制保障信息安全!
阅读全文
相关推荐


















