Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.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_Xlwt - Fatal编程技术网

每次运行python脚本时更改Excel工作表

每次运行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)

我需要更改excel工作簿中的工作表,更改次数与代码运行次数相同。假设我的python脚本第一次运行,数据保存在工作表A中,下次当某些应用程序运行时,我的脚本数据应保存在工作表B中。工作表A应与该工作簿中的相同。。 可能吗?如果是,如何进行? 这是我的密码:

#!/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使用此解决方案是否成功?