2016-07-20 41 views
0

私は外部データ接続を持つExcelファイルを持っています。私はPythonを使用して接続データを更新する必要があります。Pythonを使用してExcelの外部データ接続をリフレッシュ

私は

import win32com.client 
import os 
fileName="testconn.xlsx" 
xl = win32com.client.DispatchEx("Excel.Application") 
wb = xl.workbooks.open(fileName) 
xl.Visible = True 
wb.RefreshAll() 
wb.Save() 
xl.Quit() 

をsoultionを試してみました。しかし、このソリューションは、マシンにインストールされているExcelを必要としています。

いくつかの方法では、データ接続のURLと名前付き範囲のマッピングを取得して、URLからデータをダウンロードし、openpyxlを使用して名前付き範囲のデータを更新できます。

これを行うより良い方法はありますか?任意のPythonライブラリには、接続を取得して接続をリフレッシュする機能がありますか?

ありがとうございます。

答えて

0

確実にExcelワークシートをリフレッシュするには、Excelをインストールする必要があります。だからあなたのアプローチは、より簡単な方法があるかもしれませんが、うまくいくようです。 PandasはExcelスプレッドシートを操作するための良いライブラリを持っていますpandas.read_excelpandas.DataFrame.to_excel関数http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_excel.htmlhttp://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_excel.html Pandasだけでは名前付き範囲への書き込みはできません。ワークシートと開始セルを少なくとも指定します(名前付き範囲で開始セル/ワークシート)。しかし、あなたは別のパッケージを追加し、名前付き範囲に書き込むにはパンダ(またはそれ自体で)と一緒にそれを使用することができます - xlsxwriterここを参照してください: http://xlsxwriter.readthedocs.io/example_defined_name.html#ex-defined-name https://xlsxwriter.readthedocs.io/working_with_pandas.html

import xlsxwriter 
workbook = xlsxwriter.Workbook('defined_range.xlsx') 
worksheet.write('defined_range', data) # writes to defined_range in the Excel workbook 

パンダはまた、あなたがURLから直接データを読み込むことができますあなたの提案した解決策に役立つでしょうpandas.read_htmlhttp://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_html.html

関連する問題