每次运行python脚本时更改Excel工作表
我需要更改excel工作簿中的工作表,更改次数与代码运行次数相同。假设我的python脚本第一次运行,数据保存在工作表A中,下次当某些应用程序运行时,我的脚本数据应保存在工作表B中。工作表A应与该工作簿中的相同。。 可能吗?如果是,如何进行? 这是我的密码:每次运行python脚本时更改Excel工作表,python,xlwt,Python,Xlwt,我需要更改excel工作簿中的工作表,更改次数与代码运行次数相同。假设我的python脚本第一次运行,数据保存在工作表A中,下次当某些应用程序运行时,我的脚本数据应保存在工作表B中。工作表A应与该工作簿中的相同。。 可能吗?如果是,如何进行? 这是我的密码: #!/usr/bin/env python import subprocess import xlwt process=subprocess.Popen('Test_Project.exe',stdout=subprocess.PIPE)
#!/usr/bin/env python
import subprocess
import xlwt
process=subprocess.Popen('Test_Project.exe',stdout=subprocess.PIPE)
out,err = process.communicate()
wb=xlwt.Workbook()
sheet=wb.add_sheet('Sheet_A') #next time it should save in Sheet_B
row = 0
for line in out.split('\n'):
for i,wrd in enumerate(line.split()):
if not wrd.startswith("***"):
print wrd
sheet.write(row,i,wrd)
row=row+1
wb.save('DDS.xls')
非常感谢您的帮助……我建议您使用。它可以读取和写入xlsx文件。
如果需要,您始终可以使用Excel或Open/LibreOffice将其转换为xls,
假设最后只有一个大文件
如果不存在Excel文件,此脚本将创建一个新的Excel文件,并在每次运行时添加一个新的工作表。我使用索引+1
作为以1开头的工作表名称(标题
)。数值索引从0开始。每次将数据写入最后一张工作表时,您将得到一个名为1
、2
、3
等工作表的文件
import os
from openpyxl import Workbook
from openpyxl.reader.excel import load_workbook
file_name = 'test.xlsx'
if os.path.exists(file_name):
wb = load_workbook(file_name)
last_sheet = wb.worksheets[-1]
index = int(last_sheet.title)
ws = wb.create_sheet(index)
ws.title = str(index + 1)
else:
wb = Workbook()
ws = wb.worksheets[0]
ws.title = '1'
ws.cell('A2').value= 'new_value'
wb.save(file_name)
我建议使用。它可以读取和写入xlsx文件。
如果需要,您始终可以使用Excel或Open/LibreOffice将其转换为xls,
假设最后只有一个大文件
如果不存在Excel文件,此脚本将创建一个新的Excel文件,并在每次运行时添加一个新的工作表。我使用索引+1
作为以1开头的工作表名称(标题
)。数值索引从0开始。每次将数据写入最后一张工作表时,您将得到一个名为1
、2
、3
等工作表的文件
import os
from openpyxl import Workbook
from openpyxl.reader.excel import load_workbook
file_name = 'test.xlsx'
if os.path.exists(file_name):
wb = load_workbook(file_name)
last_sheet = wb.worksheets[-1]
index = int(last_sheet.title)
ws = wb.create_sheet(index)
ws.title = str(index + 1)
else:
wb = Workbook()
ws = wb.worksheets[0]
ws.title = '1'
ws.cell('A2').value= 'new_value'
wb.save(file_name)
这似乎是一个相当简单的逻辑:找到最后一个非空工作表并使用下一个。你有什么问题?如果我错了,请纠正我:你想多次将数据预处理到现有工作簿的另一个工作表中?@alecxe我不想预处理数据。只是我必须读取应用程序并将其数据存储到excel工作表中。然后,当应用程序获得不同的数据时,我必须再读一遍,并将其存储到另一张工作表中,以便以后比较这两张工作表。是的,关键是它是同一份工作簿。在这种情况下,答案是:不能使用xlwt编辑现有工作簿。首先,您应该通过xlrd打开它,读取现有数据,重写它,并使用xlwt将另一个数据部分添加到不同的工作表中。如果我仍然正确理解这个问题,有几个选项:为每个新的数据部分使用不同的工作簿(而不是工作表)或者在数据库中的某个位置收集数据,并在比较之前将其写入excel工作表。这似乎是一个相当简单的逻辑:找到最后一个非空工作表,然后使用下一个。你有什么问题?如果我错了,请纠正我:你想多次将数据预处理到现有工作簿的另一个工作表中?@alecxe我不想预处理数据。只是我必须读取应用程序并将其数据存储到excel工作表中。然后,当应用程序获得不同的数据时,我必须再读一遍,并将其存储到另一张工作表中,以便以后比较这两张工作表。是的,关键是它是同一份工作簿。在这种情况下,答案是:不能使用xlwt编辑现有工作簿。首先,您应该通过xlrd打开它,读取现有数据,重写它,并使用xlwt将另一个数据部分添加到不同的工作表中。如果我仍然正确理解这个问题,有几个选项:为每个新的数据部分使用不同的工作簿(而不是工作表)或者在比较之前,在数据库中的某个位置收集数据并将其写入excel工作表。@Pragya使用此解决方案是否成功?@Pragya使用此解决方案是否成功?