Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python写入现有excel文件_Python_Excel_Writing - Fatal编程技术网

使用python写入现有excel文件

使用python写入现有excel文件,python,excel,writing,Python,Excel,Writing,我有一个.xlsx文件,其中有多个工作表(包含一些内容)。我想把一些数据写进特定的表格中,比如sheet1和sheet5。现在我正在使用xlrd、xlwt和xlutils copy()函数来完成这项工作。但是,有没有办法通过在追加模式下打开文件并添加数据并保存它(就像我们对文本/csv文件所做的那样)来实现呢 这是我的密码: rb = open_workbook("C:\text.xlsx",formatting_info='True') wb = copy(rb) Sheet1 = wb.ge

我有一个.xlsx文件,其中有多个工作表(包含一些内容)。我想把一些数据写进特定的表格中,比如sheet1和sheet5。现在我正在使用xlrd、xlwt和xlutils copy()函数来完成这项工作。但是,有没有办法通过在追加模式下打开文件并添加数据并保存它(就像我们对文本/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")

感谢您操作您应该使用的现有excel文件。其他常用库(如您正在使用的库)不支持操作现有excel文件。解决办法是

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

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

  • 使用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文件中的所有值以及更新的值将保存在新文件中

  • 使用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")
    
    作为两个模块的用户,我更喜欢第二个模块而不是第一个模块。


  • 谢谢你的回复。我知道openpyxl只支持.xls文件,不支持.xlsx文件。有了你建议的解决方法,你的意思是说用现有文件的内容和我想要添加和保存的新内容创建一个新文件,然后将其重命名为原始文件?是的。openpyxl完美地支持xlsx。谢谢。我将查看openpyxl library.Hi。openpyxl支持.xls文件吗?我收到如下错误消息:InvalidFileException:openpyxl不支持旧的.xls文件格式,请使用xlrd读取此文件,或将其转换为较新的.xlsx文件格式。是的,没错,openpyxl不支持.xls文件。您应该说xlwings只适用于windows和MacOS