【问题标题】:Parsing an Excel sheet with more than 255 chars using Python 2使用 Python 2 解析超过 255 个字符的 Excel 工作表
【发布时间】:2016-12-21 01:33:09
【问题描述】:

我有一个包含 3 行的 Excel 电子表格,我正在使用 Python2 对其进行解析,并将数据导出到 .txt 文件。第三行远多于 255 个字符,因此当解析器到达 255 列长度的末尾时,它会删除其余数据。有没有办法解决这个问题?

from openpyxl import load_workbook
outf = open('c:\\Python27\\scripts\\saba_parser\\index.txt', 'w')
outf2 = open('c:\\Python27\\scripts\\IMS\\cse_errors.txt', 'w')
wb = load_workbook('c:\\Python27\\scripts\\saba_parser\\Copy of Saba_Views_good.xlsx')
s1 = wb.worksheets[0]


for r in s1:
   name = str(r[0].value)
   if r[2].value == None:
      tail = "None"
   else:
      #info = r[2].value.split("FROM")[-1]
      info = str(r[2].value)
      head, sep, tail = info.partition("FROM")
outf.write(name+','+tail+"\n")
#outf.write(name+','+info+"\n")

任何帮助将不胜感激。

【问题讨论】:

  • 您打算告诉我们您是如何阅读文件的吗?
  • 我添加了其余的代码。我虽然我最初是这样做的。道歉...

标签: python excel


【解决方案1】:

也许如果您将工作簿加载为"read only",您可以处理长列。

显然,如果文件没有正确设置尺寸,这可能会导致麻烦

只读模式依赖于创建文件的应用程序和库,以提供有关工作表的正确信息,特别是工作表的使用部分,称为尺寸。某些应用程序设置不正确。您可以使用 ws.calculate_dimensions() 检查工作表的外观尺寸。如果这返回一个您知道不正确的范围,比如 A1:A1,那么只需重置 max_row 和 max_column 属性就可以让您使用该文件

尝试在您的代码中使用此补丁

wb = load_workbook('c:\\Python27\\scripts\\saba_parser\\Copy of Saba_Views_good.xlsx',read_only=True)
s1 = wb.worksheets[0]
# Only use the next line if s1.calculate_dimensions() does not give you the expected result
# s1.max_row = s2.max_column = None

【讨论】:

  • 我添加了“read_only=True”,运行时最终没有向文件添加任何内容,.txt 文件为空白...
  • 写完后要关闭文件吗?
  • 在发布的原始代码中,我没有关闭并且正确关闭。当我添加 read_only 时,它仍然关闭,只是没有向文件添加任何内容。如果我在 outf.write 之后添加一个 close 语句,它仍然会关闭并且什么都不添加...
  • 您是否尝试在 for 循环中打印 nametail?这样你就知道数据是否真的被读取了。另一方面,您是否尝试过使用for r in s1.rows: 而不是for r in s1:?链接中的示例至少对行的迭代与您不同。
  • 将其更改为 s1.rows 解决了该问题。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-05
  • 1970-01-01
相关资源
最近更新 更多