10

ドキュメントを読むと予想されるように、これらのプロセスはどちらもありません。

worksheet.close()
workbook.close()

openpyxlで一度実行したファイルを閉じる方法はありますか?それとも、プログラムが終了したときに自動的に処理されますか?スプレッドシートをメモリにぶら下げたままにしたくありません。

4

2 に答える 2

19

さて、あなたはソースコードを見ることができます、Imは現在1.5.5をそのように使用しています

def load_workbook(filename, use_iterators=False):        
    if isinstance(filename, file):
        # fileobject must have been opened with 'rb' flag
        # it is required by zipfile
        if 'b' not in filename.mode:
            raise OpenModeError("File-object must be opened in binary mode")

    try:
        archive = ZipFile(filename, 'r', ZIP_DEFLATED)
    except (BadZipfile, RuntimeError, IOError, ValueError), e:
        raise InvalidFileException(unicode(e))
    wb = Workbook()

    if use_iterators:
        wb._set_optimized_read()

    try:
        _load_workbook(wb, archive, filename, use_iterators)
    except KeyError, e:
        raise InvalidFileException(unicode(e))
    finally:
        archive.close()
    return wb

はいのように見えますが、ワークブックをロードするときにアーカイブを閉じますが、保存するときはどうでしょうか。

  def save(self, filename):
    """Write data into the archive."""
    archive = ZipFile(filename, 'w', ZIP_DEFLATED)
    self.write_data(archive)
    archive.close()

保存するとアーカイブも閉じられるようです。

基本的には、後で閉じたファイルからExcelブックをメモリに読み込み、更新します。保存しないと変更が失われる可能性があります。保存すると、書き込み後にファイルが閉じます。

openpyxlで一度実行したファイルを閉じる方法はありますか?それとも、プログラムが終了したときに自動的に処理されますか?スプレッドシートをメモリにぶら下げたままにしたくありません。

wb.save(filename = dest_filename)ファイルの読み込みまたは書き込みの場合と同様に、変更を保存できます。handled automatically操作後に閉じられますが、openpyxlを使用すると変更が自動的に保存され、オブジェクトが削除またはガベージコレクションされたときに何も呼び出されませclass Workbook(object):__del__これは1.5.5現在のバージョンが1.5.8この記事を書いている時点のものであり、私は多くの変更があったとは思えません。

于 2012-06-26T20:59:32.987 に答える
-1

あなたはこれを試すことができます wb.Close(True)

于 2020-05-26T02:03:13.690 に答える