36

既存のワークブックを開くことはできますが、そのワークブック内の既存のワークシートを開く方法がわかりません。これを行う方法はありますか?

4

3 に答える 3

37

を使用して既存の xlsx ファイルに追加することはできませんxlsxwriter

既存のExcelファイルを読み書きできるようにするopenpyxlというモジュールがありますが、そうする方法は、Excelファイルから読み込んで、何らかの方法ですべての情報(データベースまたは配列)を保存し、必要に応じて書き換えることであると確信しています。これを呼び出しworkbook.close()て、すべての情報を xlsx ファイルに書き込みます。

同様に、独自の方法を使用して xlsx ドキュメントに「追加」できます。GPS データをメインのワークシートに取り込むさまざまなテストがあり、テストが開始されるたびに新しいシートを追加する必要があったため、最近 xlsx ファイルに追加する必要がありました。openpyxlなしでこれを回避できる唯一の方法は、xlrdでExcelファイルを読み取ってから、行と列を実行することでした...

すなわち

cells = []
for row in range(sheet.nrows):
    cells.append([])
    for col in range(sheet.ncols):
        cells[row].append(workbook.cell(row, col).value)

ただし、配列は必要ありません。たとえば、これは完全に正常に機能します。

import xlrd
import xlsxwriter

from os.path import expanduser
home = expanduser("~")

# this writes test data to an excel file
wb = xlsxwriter.Workbook("{}/Desktop/test.xlsx".format(home))
sheet1 = wb.add_worksheet()
for row in range(10):
    for col in range(20):
        sheet1.write(row, col, "test ({}, {})".format(row, col))
wb.close()

# open the file for reading
wbRD = xlrd.open_workbook("{}/Desktop/test.xlsx".format(home))
sheets = wbRD.sheets()

# open the same file for writing (just don't write yet)
wb = xlsxwriter.Workbook("{}/Desktop/test.xlsx".format(home))

# run through the sheets and store sheets in workbook
# this still doesn't write to the file yet
for sheet in sheets: # write data from old file
    newSheet = wb.add_worksheet(sheet.name)
    for row in range(sheet.nrows):
        for col in range(sheet.ncols):
            newSheet.write(row, col, sheet.cell(row, col).value)

for row in range(10, 20): # write NEW data
    for col in range(20):
        newSheet.write(row, col, "test ({}, {})".format(row, col))
wb.close() # THIS writes

ただし、データを操作して何度も入力を受け取り、テストが終了するまで Excel ファイルに書き込みたくなかったため、データを読み取って 2 次元配列に格納する方が簡単であることがわかりました。 (これは xlsxwriter でも同じように簡単に行うことができます.close()

于 2014-08-04T14:50:01.550 に答える
7

xlxsで既存のシートを開く方法について少し検索した後、私は発見しました

existingWorksheet = wb.get_worksheet_by_name('Your Worksheet name goes here...')
existingWorksheet.write_row(0,0,'xyz')

開いているワークシートに任意のデータを追加/書き込みできるようになりました。お役に立てば幸いです。ありがとう

于 2018-08-30T15:48:56.297 に答える
4

workbook.get_worksheet_by_name()機能 を使用できます: https://xlsxwriter.readthedocs.io/workbook.html#get_worksheet_by_name

https://xlsxwriter.readthedocs.io/changes.htmlによると、この機能は 2016 年 5 月 13 日に追加されました。

"リリース 0.8.7 - 2016 年 5 月 13 日

- Windows で読み取り専用イメージを挿入する際の問題を修正。問題#352。

- get_worksheet_by_name() メソッドを追加して、名前を介してワークブックからワークシートを取得できるようにしました。

-内部ファイルの作成日と変更日が UTC ではなくローカル タイムゾーンであった問題を修正しました。"

于 2019-12-17T10:34:14.080 に答える