2017-08-17 9 views
1

現在、xlwtを使用して既存のExcelファイルを編集しようとしています。私はExcelで直接編集したくないので、まずコピーを作成します。ValueError:行インデックスは65536で、.xlsフォーマットでは許可されていません

new_wb = xlutils.copy(file_location) 

このコピーから、私はxlwtモジュールを使用して、新しくコピーしたExcelファイルに新しい列を書き込んで保存しました。私がコピーしようとすると、しかし、私はエラーを取得する:

ValueError: row index was 65536, not allowed by .xls format 

私は、重複したファイルはXLSXファイル、XLSではないですので、私は少し混乱しています。私は自分のコードでxlsフォーマットを使用しません。

ご指摘いただければ幸いです。

+0

'xlutils'は、それが' xlrd'/'xlwt'ライブラリを使用しています(...' xls'形式で動作します... ) –

+1

'xlutils.copy'は読み込みに' xlrd'を使い、書き込みに 'xlwt'を使います。 'xlrd'は' .xls'と '.xlsx'の両方の形式を読むことができますが、' xlwt'は65536(2 ** 16)行に制限された '.xls'形式だけに書き込みます。 –

答えて

0

代わりにopenpyxlを試してください。 .xlsxファイルをサポートしています。

.xlsファイルの行制限は65,536です。 xlsutilsは.xlsxファイルをサポートしていない可能性があります。

あなたはそれが機能するかどうかを確認するためにこれをやって試すことができます:

from openpyxl import Workbook, load_workbook 

wb = load_workbook('filename.xlsx') 
wb = Workbook(write_only=True) 
. 
. 
. 
(make your edits) 
. 
. 
. 
wb.save('new_filename.xlsx') 
+0

私はopenpyxlで書こうとしましたが、保存するときにMemoryErrorを取得し続けました。私は読み書きだけの書式を試みましたが、既存のExcelファイルに書き込み専用のタグをどのように適用するかはわかりませんでした。 write_only = Trueタグを既存のExcelファイルにも適用できますか?基本的に、私はMemoryErrorを解決する方法が不明で、xlwtでコードを書き直しました。 –

+0

読み取り専用の書式設定では、既存のファイルを編集できません。変更した後に、ブックをopenpxlでロードして保存する必要があります。 –

+0

私は参照してください。私の状況では、既存のExcelファイルをopenpyxlやxlwtを使って編集することはできません。 openpyxlでExcelファイルを保存しようとすると、MemoryErrorが発生します。おそらくファイルサイズが大きいためです。 –

関連する問題