2009-04-22 11 views
1

PythonがEXCELと通信しています...特定の列データを検索/検索する方法を見つける必要があります。さて、私は行全体を1つずつスキャンしています... FIND/SEARCH/REPLACEのようないくつかの関数があると便利でしょう... pyExceleratorやxlrdモジュールでこれらの機能が見えません。win32comを使いたくないモジュール!それは私のツールウィンドウをベースに!pyExceleratorまたはxlrd - 与えられた数の列データを検索する/検索する方法?

FIND/SEARCH Excelの行からPythonまで....任意のアイデア、誰ですか?

答えて

2

「今、全行を1つずつスキャンしています」

何が問題なのですか?スプレッドシートのコンテキスト内の「検索」は本当に複雑です。値を検索しますか?検索式?列をまたいで列を検索しますか?特定の列のみを検索しますか?特定の行のみを検索しますか?

スプレッドシートは単純なテキストではありません。単純なテキスト処理のデザインパターンは適用されません。

スプレッドシートの検索は難しく、正しく実行しています。それは難しいので何も良いことはありません。

2

できません。これらのツールは検索機能を提供しません。ループ内のデータを繰り返し処理し、自分自身を検索する必要があります。ごめんなさい。

0

pyExceleratorを使用すると、すべてのディクショナリキーを反復処理するのではなく、(row, i) for i in range(maxcol+1)を反復するように、最大​​の行インデックスと列インデックスを最初に見つけて(格納する)簡単な最適化を行うことができます。それは、あなたが通過して、キーのセットへの辞書のマッピング値を構築しない限り、あなたが得る最高かもしれません。

なお、pyExceleratorを使用してスプレッドシートを作成している場合、いくつかのバグがあることに注意してください。私は2 30と2 32(またはその周辺)の間に整数を書くことに遭遇しました。元の著者は明らかにこれらの日に連絡するのが難しいので、xlwtは(既知の)バグを修正するフォークです。スプレッドシートの作成には、pyExceleratorのドロップイン置換えです。 import xlwt as pyExceleratorを実行して何も変更しないでください。しかし、スプレッドシートは読み込まれません。

+0

興味深い追加情報ありがとう。 – nosklo

5

@ジョンFouhy:[私はxlwtのメンテナだし、xlrdの著者]

pyExceleratorのスプレッドシート読取部は、それがxlwtから完全に消えたことをとても厳しく廃止されました。任意のXLS(エクセル2003)11.0までのExcel 2.0で作成されたファイルまたは互換性のあるソフトウェアを読んでPythonの2.1 +を使用して、 "シンプルoptimi [SZ]はエーション" xlrdを必要とされていないことをxlrd

を使用するには:

import xlrd 
book = xlrd.open_workbook("foo.xls") 
sheet = book.sheet_by_number(0) # alternatively: sheet_by_name("Budget") 
for row_index in xrange(sheet.nrows): 
    for col_index in xrange(sheet.ncols): 
+0

John Machin氏が手を携えて、昨年xlrdを使ってアプリケーションを作成しました(Johnに感謝します)。彼はここで彼のことを知っている。 – PTBNL

関連する問題