python openpyxl ovrewritting文件
python openpyxl ovrewritting file
考虑我编写的以下代码。
import openpyxl
try:
wb = openpyxl.load_workbook('test.xls')
print ('entered try')
except:
wb=openpyxl.Workbook()
wb.create_sheet('test2')
wb.save('test.xls')
我的目标是打开名为 test.xls 的 excel 文件(如果存在)并在其中创建 sheets。
代码 运行 第一次按预期创建 excel 文件。
下次我 运行 此代码时,它不会进入 try 块,而是创建一个新的工作簿和一个新的 sheet 丢失现有的 sheets,这不是预期的行为。
我是不是忽略了什么?后面的运行ning代码没有进入try块,是不是逻辑有问题?这些是我的具体疑惑。
期待一些见解。
P.S:不确定它是否相关,但我正在使用 Ubuntu 并且使用的 excel 等效项是 LibreOffice calc
编辑
首先,永远不要捕获所有异常,尤其是,不要在没有至少打印错误的情况下传递它们:
try:
wb = openpyxl.load_workbook('test.xlsx')
print ('entered try')
except Exception as e:
print e.message
wb = openpyxl.Workbook()
其次,代码确实进入了 try
子句,但在第一行之后退出。当我 运行 您的代码并打印错误消息时,我收到以下消息:
openpyxl does not support the old .xls file format, please use xlrd to
read this file, or convert it to the more recent .xlsx file format.
即使在 openpyxl 创建了 "xls" 文件后也会出现此消息,因此首先,将文件名更改为 "test.xlsx",然后事情应该开始解决了
较旧的答案
假设您希望创建空工作sheets,wb.create_sheet('test2')
每次调用都会创建一个新的sheet。如果您希望保留工作簿,则应在创建工作簿之前检查工作簿是否包含所需的 sheet。
如果您希望将数据附加到现有作品sheet,您应该在检查工作簿是否包含所需作品sheet 后再次使用ws.append(<your_data>)
。希望这有帮助
考虑我编写的以下代码。
import openpyxl
try:
wb = openpyxl.load_workbook('test.xls')
print ('entered try')
except:
wb=openpyxl.Workbook()
wb.create_sheet('test2')
wb.save('test.xls')
我的目标是打开名为 test.xls 的 excel 文件(如果存在)并在其中创建 sheets。
代码 运行 第一次按预期创建 excel 文件。 下次我 运行 此代码时,它不会进入 try 块,而是创建一个新的工作簿和一个新的 sheet 丢失现有的 sheets,这不是预期的行为。
我是不是忽略了什么?后面的运行ning代码没有进入try块,是不是逻辑有问题?这些是我的具体疑惑。
期待一些见解。
P.S:不确定它是否相关,但我正在使用 Ubuntu 并且使用的 excel 等效项是 LibreOffice calc
首先,永远不要捕获所有异常,尤其是,不要在没有至少打印错误的情况下传递它们:
try:
wb = openpyxl.load_workbook('test.xlsx')
print ('entered try')
except Exception as e:
print e.message
wb = openpyxl.Workbook()
其次,代码确实进入了 try
子句,但在第一行之后退出。当我 运行 您的代码并打印错误消息时,我收到以下消息:
openpyxl does not support the old .xls file format, please use xlrd to read this file, or convert it to the more recent .xlsx file format.
即使在 openpyxl 创建了 "xls" 文件后也会出现此消息,因此首先,将文件名更改为 "test.xlsx",然后事情应该开始解决了
较旧的答案假设您希望创建空工作sheets,wb.create_sheet('test2')
每次调用都会创建一个新的sheet。如果您希望保留工作簿,则应在创建工作簿之前检查工作簿是否包含所需的 sheet。
如果您希望将数据附加到现有作品sheet,您应该在检查工作簿是否包含所需作品sheet 后再次使用ws.append(<your_data>)
。希望这有帮助