我有一个.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")
由于
答案 0 :(得分:2)
您可以使用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")
作为两个模块的用户,我更喜欢第二个模块的第二个模块。
答案 1 :(得分:1)
要操作现有的Excel文件,您应该使用openpyxl。其他常见的库(如您使用的库)不支持操作现有的Excel文件。
是一种解决方法