web-dev-qa-db-ja.com

Xlsxwriterを使用してPythonでExcelシートからデータを読み取ることは可能ですか?可能な場合はどうしますか?

次の計算を行っています。

worksheet.write_formula('E5', '=({} - A2)'.format(number))

E5の値をコンソールに出力したい。それを手伝ってくれませんか? Xlsxwriterでそれを行うことは可能ですか、それとも同じライブラリに別のライブラリを使用する必要がありますか?

12
Ambi

XlsxWriterを使用してExcelファイルからデータを読み取ることはできません。

いくつかの ドキュメントに記載されている代替案 があります。

13
jmcnamara

Xlsxwriterを使用してパンダでは実行できない形式と数式を操作する場合は、少なくともパンダを使用してExcelファイルをxlsxwriterオブジェクトにインポートできます。方法は次のとおりです。

import pandas as pd
import xlsxwriter   

def xlsx_to_workbook(xlsx_in_file_url, xlsx_out_file_url, sheetname):
    """
    Read Excel file into xlsxwriter workbook worksheet
    """
    workbook = xlsxwriter.Workbook(xlsx_out_file_url)
    worksheet = workbook.add_worksheet(sheetname)
    #read my_Excel into a pandas DataFrame
    df = pd.read_Excel(xlsx_in_file_url)
    # A list of column headers
    list_of_columns = df.columns.values

    for col in range(len(list_of_columns)):
        #write column headers.
        #if you don't have column headers remove the folling line and use "row" rather than "row+1" in the if/else statments below
        worksheet.write(0, col, list_of_columns[col] )
        for row in range (len(df)):
            #Test for Nan, otherwise worksheet.write throws it.
            if df[list_of_columns[col]][row] != df[list_of_columns[col]][row]:
                worksheet.write(row+1, col, "")
            else:
                worksheet.write(row+1, col, df[list_of_columns[col]][row])
    return workbook, worksheet

# Create a workbook
#read you Excel file into a workbook/worksheet object to be manipulated with xlsxwriter
#this assumes that the Excel file has column headers
workbook, worksheet = xlsx_to_workbook("my_Excel.xlsx", "my_future_Excel.xlsx", "My Sheet Name")

###########################################################
#Do all your fancy formatting and formula manipulation here
###########################################################

#write/close the file my_new_Excel.xlsx
workbook.close()
1
Tim Baker

この特定の質問に答えないで、単なる提案-pandasを試してExcelからデータを読み取ります。その後、簡単にpandas DataFrame組み込みメソッドを使用してデータを操作します。

df = pd.read_Excel(file_,index_col=None, header=0)

dfはpandas.DataFrameです。これからDataFrameを通過するだけです クックブックサイト 。このパッケージについて知らない場合は、これに驚かれるかもしれませんawesome python module

0
Amandeep