1


0

PythonがEXCELと通信しています…​ 私は与えられた列データのために行を見つける/検索することができるように方法を見つける必要があります。 今、私は行全体を1つずつスキャンしています…​ もしFIND / SEARCH / REPLACEのようないくつかの機能があるなら、それは役に立ちます。 私はpyExceleratorまたはxlrdモジュールでこれらの機能を見ません。 私はwin32comモジュールを使いたくありません! それは私のツールウィンドウベースになります!

Pythonを介したExcelの行の検索/検索 どんな考え、誰?

4 Answer


5


@ John Fouhy:[私はxlwtのメンテナであり、xlrdの作者です]

pyExceleratorのスプレッドシートを読む部分が非常に非推奨になったため、xlwtから完全に消えました。 Python 2.0を使用して、Excel 2.0から11.0まで(Excel 2003)または互換性のあるソフトウェアで作成されたXLSファイルを読むには、 xlrdを使用してください。

その「単純な最適化」はxlrdでは必要ありません。

import xlrd book = xlrd.open_workbook( "foo.xls")sheet = book.sheet_by_number(0)#またはxrange(sheet.nrows)のrow_indexに対するsheet_by_name( "Budget"):xrange(sheet.ncols)のcol_indexについて:


2


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

それのどこが悪いんだい? スプレッドシートのコンテキストでは、「検索」は本当に複雑です。 値を検索しますか? 検索式 列を越えて行を検索しますか? 特定の列のみを検索しますか? 特定の行のみを検索しますか?

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

スプレッドシート検索は大変で、正しくやっています。 それは難しいので何もないです。


2


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


0


pyExceleratorを使えば、最初に最大の行と列のインデックスを見つけて(そしてそれらを格納して)単純な最適化を行うことができます。それであなたはすべての辞書を繰り返す代わりに範囲(maxcol 1)のiに対してキー 調べて、一連のキーへの辞書マッピング値を作成したいのでない限り、これが最善の方法です。

ちなみに、スプレッドシートを書くためにpyExceleratorを使っているのであれば、それにはいくつかのバグがあることに注意してください。 私は2 30と2 32の間の整数(あるいはその周辺)を書くことを含むものに遭遇しました。 最初の作者は最近連絡が取れないようですので、 `xlwt`は(既知の)バグを修正するフォークです。 スプレッドシートを書くためには、pyExceleratorの代わりになるドロップインです。 xlwtをpyExceleratorとしてインポートすることができ、それ以外は何も変更できません。 ただし、スプレッドシートは読みません。