【问题标题】:Writing into existing excel file using python使用python写入现有的excel文件
【发布时间】:2015-06-09 06:21:04
【问题描述】:

我有一个 .xlsx 文件,其中有多个工作表(包含一些内容)。我想将一些数据写入特定的工作表,比如 sheet1 和 sheet5。现在我正在使用 xlrd、xlwt 和 xlutils copy() 函数来做这件事。但是有什么办法可以通过以附加模式打开文件并添加数据并保存它(就像我们为 text/csv 文件所做的那样)?

这是我的代码:

rb = open_workbook("C:\text.xlsx",formatting_info='True')
wb = copy(rb)
Sheet1 = wb.get_sheet(8)
Sheet2 = wb.get_sheet(7)
Sheet1.write(0,8,'Obtained_Value')
Sheet2.write(0,8,'Obtained_Value')
value1 = [1,2,3,4]  
value2 = [5,6,7,8]
for i in range(len(value1)):
 Sheet1.write(i+1,8,value1[i])
for j in range(len(value2)):
 Sheet2.write(j+1,8,value2[j])
wb.save("C:\text.xlsx")

谢谢

【问题讨论】:

    标签: python excel writing


    【解决方案1】:

    您可以使用 openpyxl 模块或使用 xlwings 模块来完成

    1. 使用 openpyxl

      from openpyxl import workbook #pip install openpyxl
      from openpyxl import load_workbook
      
      wb = load_workbook("C:\text.xlsx")
      sheets = wb.sheetnames
      Sheet1 = wb[sheets[8]]
      Sheet2 = wb[sheets[7]]
      #Then update as you want it
      Sheet1 .cell(row = 2, column = 4).value = 5 #This will change the cell(2,4) to 4
      wb.save("HERE PUT THE NEW EXCEL PATH") 
      

      text.xlsx 文件将用作模板,text.xlsx 文件中的所有值连同更新的值将保存在新文件中

    2. 使用 xlwings

       import xlwings 
       wb = xlwings.Book("C:\text.xlsx")  
       Sheet1 = wb.sheets[8]
       Sheet2 = wb.sheets[7]
       #Then update as you want it
       Sheet1.range(2, 4).value = 4 #This will change the cell(2,4) to 4
       wb.save()
       wb.close()
      

      这里的文件将在 text.xlsx 文件中更新,但如果您想拥有该文件的副本,您可以使用下面的代码

      shutil.copy("C:\text.xlsx", "C:\newFile.xlsx") #copies text.xslx file to newFile.xslx
      

      并使用

      wb = xlwings.Book("C:\newFile.xlsx") instead of wb = xlwings.Book("C:\text.xlsx")
      

      作为两个模块的用户,我更喜欢第二个而不是第一个。

    【讨论】:

    • 你应该说xlwings只适用于windows和MacOS
    【解决方案2】:

    要操作现有的 excel 文件,您应该使用 openpyxl。其他常用库(如您使用的库)不支持操作现有的 excel 文件。解决方法是

    • 将输出文件另存为其他名称 - text_temp.xlsx
    • 删除您的原始文件 - text.xlsx
    • 将输出文件 - text_temp.xlsx 重命名为 text.xlsx

    【讨论】:

    • 感谢您的回复。我知道 openpyxl 只支持 .xls 文件而不支持 .xlsx 文件。使用您建议的解决方法,您的意思是说使用现有文件的内容和我想要添加的新内容创建一个新文件并将其保存,然后将其重命名为原始文件?
    • 是的。 openpyxl 完美支持 xlsx。
    • 谢谢。我将研究 openpyxl 库。
    • 嗨。 openpyxl 是否支持 .xls 文件?我收到如下错误消息: InvalidFileException: openpyxl 不支持旧的 .xls 文件格式,请使用 xlrd 读取此文件,或将其转换为更新的 .xlsx 文件格式。
    • 是的,没错,openpyxl 不支持 .xls 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    相关资源
    最近更新 更多