1

巨大なワークブック (60 万行) と 315 列があり、その列名を配列に取得する必要があります。サイズが大きいため、範囲の最初の行をコピーするためにブックを開いたり閉じたりしたくありません。また、「グローバル」という単語で始まる最初の行から特定の列のみを取得したいと考えています。

これを行う方法についての短いコード例を誰かが手伝ってくれますか? 私はADOX、ADOなどを試しましたが、どちらも255列の制限を示していることに注意してください。ワークブックも開きたくありませんが、必要な「グローバル」列を 315 列から配列に引き出します。

どんな助けでも大歓迎です。

4

2 に答える 2

2

新しいワークブックを開いてターゲットの最初の行をコピーし、A1 で次の式を使用できます。

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

PATH+FILENAME+WORKSHEET は一重引用符で囲み、FILENAME は角括弧で囲み、感嘆符でセル参照を区切ります。

次に、コピー/貼り付けまたは右に入力して、次の 314 列を取得します。注: この数式は、空のターゲット セルに対してゼロを返します。

列見出しを取得したら、閉じたワークブックへのリンクを破棄する場合は、copy/paste_special_values を実行できます。

それが役立つことを願っています

于 2016-03-01T22:35:44.457 に答える
1

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 は、シーケンスを扱うのが非常に好きな言語です。ワークシートのシーケンス - 各ワークシート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 を含む)、高度なインデックスとクエリにより、データの操作が簡単になります)

于 2016-03-01T21:10:21.867 に答える