5

Python3 で xlrd を使用して Excel ファイルを読み取ろうとしていますが、セルを読み取った結果が得られません。

アクセスしようとしているセルには、外部ソース セットがあり、そこから更新されているようですが、そのソースを使用できないため、Excel にはキャッシュされた値が表示されます。これらの値は同じ Excel ファイルの別の場所にあるため、シートに「2.65111」などと表示されている間、セルの実際の内容は Excel のこの編集バーに「=BC12」と表示されます。

これを xlrd 経由で読み込もうとすると、次のようになります。

wb=xlrd.open_workbook("filename.xls",formatting_info=True)
wb.sheet_by_name("sheetname").cell(12,9)

セルの内容は次のように表示されます。

'text:'[XXXX]' (XF:95)'

(XXXX は、この外部 .csv ファイルの列の名前である可能性が最も高い)

xlrd は、Excel で表示される "2.65111" を返すか、少なくとも "=BC12" を他のセルへの参照として返すことを期待しますが、"[XXXXX]" を使用することはできません。

これら2つのいずれかを表示するようにxlrdを取得する方法はありますか?

この「[XXXXX]」がどこから来たのか、なぜこれがExcelで見たものと大きく異なるのか、私は本当に混乱しています.

PS: BC12 セルからのデータだけを使用することはできません。これはファイルの自動処理である必要があり、「元の」セルのみが固定位置にあり、これらの他のセルは翌日別のランダムな位置にある可能性があるためです。

4

3 に答える 3

1

1 つの解決策は、数式や外部ソースを含まず、値のみを含む Excel シートのコピーを作成することです。

すべてを強調表示してコピーし、「特別に貼り付け」て新しいシートに貼り付け、「値のみ」などを選択することでこれを行うことができます。

于 2013-02-28T14:42:19.117 に答える
0

唯一の選択肢は、ExcelCOMAPIを介して実際のExcelでファイルを前処理することである可能性があります。.NETで簡単なことを行うことができます。これにより、Excelファイルが読み込まれ、データが取得され、同様の構造のExcelファイルに保存されますが、外部参照はありません。ExcelでExcelファイルをロードするには長い時間(数秒)かかり、サーバーでオーバーロードすると確実に失敗しますが、1日に数個のファイルがある場合は機能します。もちろん、Windowsで実行していない場合は機能しません。

于 2013-03-06T14:07:47.540 に答える
0

「12,9 セル」は、Excel では J13 (J12 ではありません) として認識されます。同じように比較していると確信していますか?J13 に BC12 への参照が含まれると予想されますか? J13 と BC12 の周りの細胞を調べて何か推測できますか?

于 2013-03-02T21:44:51.950 に答える