使用python3 读取excel追加内容

使用技术:python3
使用库:xlrd,xlutils
注意点:因为使用xlrd + xlwt 边读边写入excel时,不能保留原excel中的样式,所以使用xlutils复制excel的方式,可以保留原来excel文件中的样式

代码如下:

#操作excel的测试代码
#使用python 读取txt文件的内容到excel中
import os
import re
import xlwt
#xlwt缺点 写入无法保留原格式
#如果要保留原格式可以通过xlutils库复制excel的方式写入
import xlrd

from xlutils.copy import copy
#txt文件中存储需要追加的内容,格式为 :

> 每行的第一列内容:值

filePath = "G:\\测试输入文件.txt"
xlsFile = "G:\\test2.xls"
#写入列中文 10  外文11
writeColIndex = 10
#首先读取txt文件中的内容中,填充到一个字典中
dict = {}
with open(filePath,'r',encoding='UTF-8') as f:
    line = f.readline()
    while line:
        # 获取文件名
        if (line is None or line.strip() == ''):
            continue
        # 取出文件名
        docname = os.path.splitext(line.split(":")[0])[0].replace(" ","");
        jilu = line.split(":")[1]
        #取出 数值
        s = re.sub("\D","",jilu)
        dict[docname] = s
        line = f.readline()


#1 打开excel文件 formatting_info= True 打开保留原excel格式
excel = xlrd.open_workbook(xlsFile,formatting_info=True)

readWorkSheet = excel.sheet_by_index(0)
#2 复制excel文件
copy_workBook = copy(excel)
#3 开始操作复制好的excel文件
#3.1 获取excel文件的第一个sheet页
ws = copy_workBook.get_sheet(0)
for rowIndex in range(readWorkSheet.nrows):
    row = readWorkSheet.row_values(rowIndex)  # 取出行的值;
    if (rowIndex != 0):
        title = row[0].replace(" ","")
        if (title in dict.keys()):
            ws.write(rowIndex, writeColIndex, dict[title])


#3 保存excel文件
copy_workBook.save("G:/test2.xls")

#注: xlrd模块0.8版本后不支持以xlsx为后缀名文件



### 使用 Pandas 和 Openpyxl 将数据追加Excel 文件 为了将数据追加到现有的 Excel 文件,可以采用两种主要方法:一种是通过 `pandas` 库配合 `openpyxl` 来操作;另一种则是直接利用 `openpyxl` 进行更底层的操作。 #### 方法一:使用 Pandas 配合 Openpyxl 当使用 `pandas` 处理 Excel 文件时,默认情况下会覆盖现有文件中的内容。为了避免这种情况并实现真正意义上的追加功能,可以通过读取原始工作表的内容作为 DataFrame 对象,再将其与新数据合并后重新写入文件: ```python import pandas as pd # 假设 new_data 是要追加的数据框 new_data = pd.DataFrame({'A': [1], 'B': [2]}) with pd.ExcelWriter('output.xlsx', mode='a', engine="openpyxl") as writer: # 如果希望向特定的工作表中追加,则指定 sheet_name 参数 new_data.to_excel(writer, index=False, header=False, startrow=writer.sheets['Sheet1'].max_row) ``` 此代码片段展示了如何打开一个已存在的 Excel 文件 (`'output.xlsx'`) 并以附加模式(`mode='a'`) 写入新的数据帧 `new_data` 到名为 `'Sheet1'` 的工作表中[^1]。 #### 方法二:仅使用 Openpyxl 实现更加灵活的控制 对于某些复杂场景下可能需要对单元格级别有更多的掌控力,在这种情况下可以直接调用 `openpyxl` API 完成任务: ```python from openpyxl import load_workbook wb = load_workbook(filename='output.xlsx') ws = wb.active # 获取活动工作表 for row in ws.iter_rows(min_col=0, max_col=len(new_data.columns)): for cell in row: pass # 可在此处处理每一列的具体逻辑 last_row = ws.max_row + 1 for col_num, value in enumerate(list(new_data.iloc[0]), 1): _cell = ws.cell(row=last_row, column=col_num, value=value) wb.save('output.xlsx') # 记得保存更改后的文档 ``` 上述例子说明了如果只想要简单地把一行记录添加到最后的话应该如何做。当然也可以根据实际需求调整循环体内的具体行为来满足不同的业务要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值