【问题标题】:Invalid mode or filename when using openpyxl in python 2.7在 python 2.7 中使用 openpyxl 时模式或文件名无效
【发布时间】:2015-03-09 09:50:58
【问题描述】:

我正在尝试使用 openpyxl 工具在现有工作簿中编写一些内容。

但是我得到了 Err no 22 并且不知道为什么。

我的脚本如下所示:

#Reading & writing to a workbook

from openpyxl import Workbook
from openpyxl.compat import range
from openpyxl.cell import get_column_letter

wb = Workbook()

dest_filename = 'J:\Python_Script\book2.xls'

ws = wb.active

ws.title = "Tabelle 1"

for col_idx in range(1, 40):
     col = get_column_letter(col_idx)
     for row in range(1, 600):
         ws.cell('%s%s'%(col, row)).value = '%s%s' % (col, row)

ws = wb.create_sheet()

ws.title = 'Pi'

ws['F5'] = 3.14

wb.save(filename = dest_filename)

这是我收到的错误消息的控制台输出:

//------------------

Traceback (most recent call last):
File "J:/Python_Script/xlsx_test.py", line 26, in <module>
wb.save(filename = dest_filename)
File "build\bdist.win32\egg\openpyxl\workbook\workbook.py", line 281, in save
save_workbook(self, filename)
File "build\bdist.win32\egg\openpyxl\writer\excel.py", line 214, in save_workbook
writer.save(filename)
File "build\bdist.win32\egg\openpyxl\writer\excel.py", line 196, in save
archive = ZipFile(filename, 'w', ZIP_DEFLATED)
File "C:\Python27\lib\zipfile.py", line 752, in __init__
self.fp = open(file, modeDict[mode])
IOError: [Errno 22] invalid mode ('wb') or   filename: 'J:\\Python_Script\x08ook2.xls'

//------------------------

我不知道为什么文件路径现在不同了,文件名也与输入部分中的文件名不同。

谢谢

编辑:

解决了。只需将路径中的 \ 更改为 /。

【问题讨论】:

  • 编辑语法以提高清晰度并重新标记以提高可见性
  • 客户端代码几乎不需要使用get_column_letter。我想它在这里只是为了说明。创建单元格时,您几乎应该始终使用ws.append()ws[]

标签: python python-2.7 openpyxl


【解决方案1】:

在 Python 中,\ 在字符串中用于转义字符。您可以通过使用“原始字符串”前缀“r”来避免这种情况。所以r'J:\Python_Script\book2.xls' 应该可以工作。

但是,在使用路径时,最常见的是使用 os.path 模块来确保这是正确的。

dest_filename = os.path.join("J:", "Python_Script", "book2.xlsx")

这在编写可移植代码时非常宝贵。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 2014-04-25
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多