python另存为excel_为什么我不能从Python代码中“另存为” Excel文件?

我有一个Python ExcelDocument类,该类提供了用于读取/写入/格式化Excel文件的基本便捷方法,并且在看似简单的Python代码中出现了一个奇怪的错误。 我有一个save和saveAs方法:

1

2

3

4

5

6

7def save(self):

''' Save the file '''

self.workbook.Save()

def saveAs(self, newFileName):

''' Save the file as a new file with a different name '''

self.workbook.SaveAs(newFileName)

save方法可以正常工作,但是当我尝试调用saveAs方法-myExcelObject.saveAs("C:/test.xlsx")时,出现以下错误:

1

2

3

4

5

6

7

8

9

10

11Traceback (most recent call last):

File"C:\workspace\Utilities\src\util\excel.py", line 201, in

excel.saveAs("C:/test.xlx")

File"C:\workspace\Utilities\src\util\excel.py", line 185, in saveAs

self.workbook.SaveAs(newFileName)

File"", line 7, in SaveAs

pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, u'Microsoft Office Excel', u"Microsoft Office Excel cannot access the file 'C:\\//8CBD2000'. There are several possible reasons:

\u2022 The file name or path does not exist.

\u2022 The file is being used by another program.

\u2022 The workbook you are trying to save has the same name as a currently open workbook.", u'C:\\Program Files\\Microsoft Office\\Office12\\1033\\XLMAIN11.CHM', 0, -2146827284), None)

谁能解释发生了什么事?

几个问题。 该文件已经存在吗? 该文件已经打开吗? save()写入文件到哪里?

我发现(困难的方式)SaveAs不支持斜杠/。

请尝试使用saveAs("C:\\test.xlx")。

哇,做到了。非常感谢!!但是为什么与保存方法不同?有什么办法可以清理输入?我真的不能相信所有用户都知道这个怪癖...

@froadie,SaveCopyAs支持,但SaveAs不支持。去搞清楚。我只是在文件名中用。

或使用saveAs(os.path.join("C:","test.xlx"))。 os.path库充满了平台无关的方式来处理文件名,路径等。

@froadie,尝试os.path.normpath。

难以置信的是这是问题所在。谢谢一千次。

@MikeDeSimone从python 2.7.9开始,您实际上必须使用os.path.join(C:, os.sep, test.xlx)。否则在C:和test.xlx之间不会有任何斜线。有关更多详细信息,请参见这篇文章。

@NickDandoulakis,非常感谢,您的评论帮助我终于解决了该问题。我在代码中使用了,并且搜索了很多SO / google帖子,但直到我登陆这里都找不到任何东西。

它总是抛出错误,提示SaveAs不是方法,对我唯一有用的是SaveCopyAs,但是随后我得到一个提示框,要求我保存原始文件

@ mp252,尝试使用SaveAs而不是SaveAs

@NickDandoulakis我尝试了两种方法,但是都没有用,我做了一个变通方法,即创建的工作簿,而不是创建一个新的工作簿,而是打开一个excel文件,然后能够使用save

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值