大家好,感谢您提前。
我有一个python脚本在那里我打开模板excel文件,添加数据(同时保留风格),并重新保存。 我希望能够删除,我没有拯救出来的新的XLS文件之前编辑的行。 我的模板XLS文件有一个页脚,所以我想在页脚之前删除多余的行。
这里是我正在加载XLS模板:
self.inBook = xlrd.open_workbook(file_path, formatting_info=True)
self.outBook = xlutils.copy.copy(self.inBook)
self.outBookCopy = xlutils.copy.copy(self.inBook)
然后我写的信息,以outBook同时抓住从outBookCopy风格并将其应用到我在outbook修改的每一行。
让我怎么写之前删除outBook行? 感谢大家!
我实现用熊猫包....
import pandas as pd
#Read from Excel
xl= pd.ExcelFile("test.xls")
#Parsing Excel Sheet to DataFrame
dfs = xl.parse(xl.sheet_names[0])
#Update DataFrame as per requirement
#(Here Removing the row from DataFrame having blank value in "Name" column)
dfs = dfs[dfs['Name'] != '']
#Updating the excel sheet with the updated DataFrame
dfs.to_excel("test.xls",sheet_name='Sheet1',index=False)
xlwt不这样做提供了一个简单的界面,但我已经成功了有点类似问题,通过直接改变工作表的列属性和行号的行和单元格(插入的行的多个拷贝到复制的工作簿)对象。
由于要删除的行数,你想保持第一行的起始号,这样的事情可能工作:
rows_to_move = worksheet.rows[first_kept_row:]
for row in rows_to_move:
new_row_number = row._Row__idx - number_to_delete
row._Row__idx = new_row_number
for cell in row._Row__cells.values():
if cell:
cell.rowx = new_row_number
worksheet.rows[new_row_number] = row
# now delete any remaining rows
del worksheet.rows[new_row_number + 1:]
你有没有在您要删除,或它们下面的行合并范围? 如果是的话,你还需要为他们贯穿在工作表的属性merged_ranges和更新的行。 另外,如果您有更多的行删除比你的尾行,你需要
作为一个方面说明 - 我能这样写文本到我的工作表,并保留预定义的样式:
def write_with_style(ws, row, col, value):
if ws.rows[row]._Row__cells[col]:
old_xf_idx = ws.rows[row]._Row__cells[col].xf_idx
ws.write(row, col, value)
ws.rows[row]._Row__cells[col].xf_idx = old_xf_idx
else:
ws.write(row, col, value)
这可能让你跳过对电子表格的两个副本同时打开。