web-dev-qa-db-ja.com

シートのワークブックを確認し、不足している場合は追加してください

シートが.xlsxファイルに存在するかどうかを確認し、存在しない場合は追加したいのですが。

book = load_workbook('test.xlsx')
writer = pd.ExcelWriter('test.xlsx', engine = 'openpyxl')
writer.book = book

if 'testSheet' in book.sheetnames:
    pass
else:
    book.add_sheet(book['testSheet'])

これが機能しない理由についてのアイデアはありますか?

3
MaxB
  1. openpyxlをインストールする
  2. openpyxlをpxlとしてインポート
  3. my_Excel_wb = pxl.load_workbook( "Excel.xlsx")
  4. my_Excel_wb.sheetnamesで「sheetname」でない場合:my_Excel_wb.create_sheet( 'sheetname')
  5. 最後に本を保存します。
0
yoga

私は明らかにあなたも必要な仕事をする関数を使いました。 xlwingsを使用していますが、openpyxlはわかりません。 3つの重要なケースに対処できます。

  • 開いているワークブックはありません
  • 必要なシートが見つかりません(例外を発生させずに新しいシートを作成してください)
  • シートの検索に失敗しました(これはシートの検索に使用され、ユーザーには表示されません)

関数は(成功した場合)xlwings.Sheetオブジェクト(Excelシートオブジェクトのxlwingsに相当)を返します。xlwings.sheet.apiプロパティを使用して、ネイティブCOM "Sheet"オブジェクトに戻ることができます。

import xlwings as xw

def load_xlsh(SheetName):
    foundBK = False
    iBK = 0
    try:
        while (not foundBK) and iBK < len(xw.books):
            srcBK = xw.books[iBK]
            try:
                srcSH = srcBK.sheets[SheetName]
                foundBK = True
            except:
                iBK += 1
        if foundBK == False:
            srcBK.sheets.add(SheetName)
        else:
            return srcSH
    except AttributeError:
        print('No Workbooks open')
0
Dewydd

xlwingsを使用する場合、次のような別の方法があります。

wb = xw.Book(FileName)
sNamList = [sh.name for sh in Wb.sheets]
if 'sheetName' in sNamList: print('sheetName exists!')
0
JOSEPH CHONG