我有一个庞大的工作簿(60万行)和315列,我的列名称需要抓取到一个数组中。由于体积庞大,我不想打开和关闭工作簿来复制该范围的第一行。另外,我想只抓取第一行中以" Global"开头的某些列。
任何人都可以提供有关如何执行此操作的简短代码示例吗?请注意我已尝试ADOX,ADO等,但都显示255列限制。我也不想打开工作簿,而是拉出所需的" Global" 315列中的列到数组中。
非常感谢任何帮助。
答案 0 :(得分:2)
您可以通过打开新工作簿来复制目标的第一行,并在A1中使用此公式:
='C:\PATH_TO_TARGET\[TARGET_FILE_NAME.xlsx]WORKSHEET_NAME'!A1
请注意,PATH + FILENAME + WORKSHEET用单引号括起来,FILENAME用方括号括起来,感叹号将单元格引用分开。
然后复制/粘贴或填充右边以获得接下来的314列。注意:此公式将为空目标单元格返回零。
获得列标题后,如果要销毁已关闭工作簿的链接,则可以复制/ paste_special_values。
希望有所帮助
答案 1 :(得分:1)
您可以使用Python编程语言。 虽然它不能与XLSX fiels一起使用,但您只需从此处安装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 libray为你的工作簿提供了:
一个对象,它是一系列工作表 - 每个工作表都有一个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数据库,(包括其bult-in,单文件数据库,sqlite),其中复杂的索引和查询可以轻松处理您的数据)