我有一个巨大的工作簿(60 万行)和 315 列,我需要将它们的列名抓取到一个数组中。由于尺寸巨大,我不想打开和关闭工作簿来复制范围的第一行。另外,我只想从第一行中获取以“Global”开头的某些列。
任何人都可以提供有关如何执行此操作的简短代码示例吗?请注意,我尝试过 ADOX、ADO 等,但都显示了 255 列的限制。我也不想打开工作簿,而是将所需的“全局”列从 315 列中拉到一个数组中。
非常感谢任何帮助。
您可以通过打开一个新工作簿来复制目标的第一行,并在 A1 中使用以下公式:
='C:\PATH_TO_TARGET\[TARGET_FILE_NAME.xlsx]WORKSHEET_NAME'!A1
请注意,PATH+FILENAME+WORKSHEET 用单引号括起来,FILENAME 用方括号括起来,感叹号分隔单元格引用。
然后复制/粘贴或向右填充以获得接下来的 314 列。注意:此公式将为空目标单元格返回零。
一旦你有了列标题,如果你想破坏关闭的工作簿的链接,你可以复制/粘贴_special_values。
希望有帮助
您可以使用 Python 编程语言。虽然它不能主动与 XLSX 文件一起使用,但您只需从此处安装 openpyxl 外部模块:https ://pypi.python.org/pypi/openpyxl -(您还必须安装 Python。当然 - 只需下载它来自 www.python.org)
它将使您在交互式 Python 会话中处理数据变得轻而易举,无需加载 Excel 界面即可打开工作簿的时间应该只是您预期的一小部分。(不过,我认为它必须适合您的记忆)。
但这就是我必须在交互式 Python2 会话中打开工作簿并检索以“bl”开头的列名的全部内容:
import openpyxl
a = openpyxl.load_workbook("bla.xlsx")
[cell.value for cell in a.worksheets[0].rows[0] if cell.value.startswith("bl")]
输出:
Out[8]: [u'bla', u'ble', u'bli', u'blo', u'blu']
最后一个输入行需要知道 Python 才能被理解,所以,这里是发生的事情的总结:Python 是一种非常喜欢使用序列的语言 - 而 openpyxl 库就是这样为您的工作簿提供的:一个对象,它是工作表序列 - 每个工作表都有一个rows
属性,该属性具有工作表中所有行的序列,并且每一行都是单元格序列。每个单元格都有一个value
属性,即其中的文本。
内联for
语句是紧凑的形式,但它可以写成多行语句:
In [10]: for cell in a.worksheets[0].rows[0]:
....: if cell.value.startswith("bl"):
....: print cell.value
....:
bla
ble
bli
blo
blu
请记住,通过更深入地探索 Python,您可以以一种比非交互方式更容易的方式以编程方式操作您的数据 - 给定这种大小的数据集 - 您甚至可以使用 Python 本身将选择的内容拖放到 SQL 数据库中,(包括其内置的单文件数据库 sqlite),其中复杂的索引和查询可以使处理数据变得轻而易举)