2

2 つの質問:

質問1: Python で Excel ファイルを読み取るxlrdについて 勉強を始めたところです。xlsrd にメソッドがあるかどうか疑問に思っていました-> openpyxl に似ているget_active_sheet()、アクティブシートを取得する他の方法ですか?

get_active_sheet()これで動作しますopenpyxl

openpyxl をインポート

wb = openpyxl.load_workbook('example.xlsx')

active_sheet = wb.get_active_sheet()


output : ワークシート「Sheet1」

シートの名前を取得する方法を見つけましたxlrdが、どれもアクティブなシートを教えてくれませんでした。

質問 2:

xlrdExcelファイルを読み取るためのPythonで最適なパッケージはありますか? また、Excelファイルを読み書きするための他のpythonパッケージ()に関する情報が含まれているこれに出くわしました。xlsxwriterxlwtxlutils

上記のどれが、Excel ファイルを読み取り、異なる列に異なる検証を適用するアプリを作成するのに最適ですか?

例: ヘッダー「ID」を持つ列には一意の値が必要であり、ヘッダー「国」を持つ列には有効な国が必要です。

4

3 に答える 3

2

へようこそStack Overflow

私はしばらくExcelファイルを扱ってきPythonたので、あなたの質問を手伝うことができると思います.

openpyxlxlrd1 つはxlsxファイル (Excel 2007+) 用、もう 1 つはファイル (Excel 1997-2003) 用ですxls

Xenon彼の答えでExcelは、シートの概念を認識していないと述べていますactiveが、これは完全に真実ではありません。ドキュメントを開く場合はExcel、他のシート (最初のシートではない) に移動し、ドキュメントを保存して閉じます。次にドキュメントを開くとExcel、最後のシートのドキュメントが開きます。

ただし、xlrdこの種のワークフロー、つまりactiveシートの要求はサポートしていません。シート名がわかっている場合は メソッドを使用sheet_by_nameでき、シート インデックスがわかっている場合は メソッドを使用できますsheet_by_index

これが最高のパッケージかどうかはわかりませんが、xlrdかなりしっかりしていて、使用に問題はありませんでした。

与えられた例は、最初の行を最初に反復し、ヘッダーがどの列であるかの辞書を保持することで解決できます。次に、ID 列のすべての値をリストに格納し、そのリストの長さをそのリストから作成されたセットの長さと比較しlen(values) == len(set(values))ます。それに続いて、Country のヘッダーを含む列を反復処理し、すべての有効な郡で以前に作成した辞書に含まれているかどうかを各値を確認できます。

この回答があなたのニーズに合っていることを願っています。

要約:xlrd十分に成熟しているため、固執します。

于 2016-08-26T08:21:43.890 に答える