在Excel对象模型自动化界面中按名称获取工作表

有没有办法使用XlsxWriter按名称获取工作表?

import win32com.client, types, pythoncom, sys, os, string import xlsxwriter xlApp = win32com.client.Dispatch("Excel.Application") for file in os.listdir("C:\Users\HUTRC1\Desktop\Escel"): if file.endswith(".xlsx"): fileName = file books = xlApp.Workbooks.Open(r"C:\\Users\\Desktop\\Escel\\" + str(fileName)) ws = books.sheet_by_name("2015 Data") #ws = books.Worksheets[0] ws.Visible = 1 fileName.replace(".xlsx","") ws.ExportAsFixedFormat(0, r"C:\\Users\\Desktop\\PDF\\" + str(fileName) + str(".pdf")) books.Close(True, r"C:\\Users\\Desktop\\Escel\\" + str(fileName)) 

XlsxWriter 0.8.7现在有一个方法来做到这一点。 例如:

 worksheet = workbook.get_worksheet_by_name("Sheet1") 

请参阅: http : //xlsxwriter.readthedocs.io/workbook.html#get_worksheet_by_name

例如,假设您要将图表或格式添加到Pandas创build的工作表中。 即使使用XlsxWriter,您也可能需要访问工作表。 诚然,这不会打开一个现有的文件,而是find您正在创build的工作簿中的工作表。 你可以这样做:

 import numpy as np import pandas as pd from xlsxwriter.utility import xl_range writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter') workbook = writer.book df = pd.DataFrame({'Data': np.random.rand(255)}) df.to_excel(writer, 'TEST') test_sheet = writer.sheets['TEST'] chart = workbook.add_chart({'type': 'scatter'}) chart.add_series( { 'name': 'Rand', 'marker': { 'type': 'circle', 'size': 2, 'fill': {'color': '#008000'}, 'border': {'none': True}, }, 'line': {'none': True}, 'categories': "=TEST!{}".format(xl_range(1, 0, 255, 0)), 'values': "=TEST!{}".format(xl_range(1, 1, 255, 1)) } ) test_sheet.insert_chart('C1', chart) writer.close()