从一个巨大的封闭的工作簿中抓取和过滤超过255列

我有一个巨大的工作簿(60万行)和315列的列名,我需要抓住一个数组。 由于巨大的尺寸,我不想打开和closures工作簿复制范围的第一行。 此外,我只想从第一行抓取以“Global”开头的某些列。

任何人都可以帮助短代码示例如何去做这个? 请注意我已经尝试了ADOX,ADO等,但都显示了255列的限制。 我也不想打开工作簿,但从315列中拉出所需的“全局”列到数组中。

任何帮助是最感激的。

您可以通过打开一个新的工作簿来复制目标的第一行,并在A1中使用这个公式:

='C:\PATH_TO_TARGET\[TARGET_FILE_NAME.xlsx]WORKSHEET_NAME'!A1 

请注意,PATH + FILENAME + WORKSHEET用单引号括起来,FILENAME用方括号括起来,感叹号分隔单元格引用。

然后复制/粘贴或填写右边的下一个314列。 注意:这个公式将为空目标单元格返回零。

一旦你有列标题,你可以复制/ paste_special_values如果你想摧毁链接到已closures的工作簿。

希望有所帮助

你可以使用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'] 

最后一个input行需要知道要被理解的Python,所以,下面是发生了什么事情的总结:Python是一个非常喜欢使用序列的语言 – 而openpyxl libray为您的工作簿提供了这样的function:一个对象,它是工作表序列 – 每个工作表都有一个rows属性,它具有表格中所有行的序列,并且每行都包含一系列单元格。 每个单元格都有一个value属性,它是其中的文本。

内联语句是紧凑forms,但可以写成多行语句:

 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),其中复杂的索引和查询可以使你的数据工作变得轻而易举)