前提
ネットワーク上にあるExcelファイルを取り込んで、streamlitで可視化するアプリケーションを作成しようと思っています。
sharepoint上にExcelファイルを置き、それをinputとしてETLなどを行い、簡単な可視化を行った結果をユーザに提示するものとなります。
実現したいこと
上記のようなシステムで、sharepointにあるデータを、自らのPC上にpandasのdataframeとして取り込みたいと考えています。
ただし、組織のルール変更の関係で、ローカルPC上にデータをExcelなどの容易に閲覧できる形で持っておくのはNGということになってしまったため、sharepoint上に格納してそこからアクセスすることを考えています。
発生している問題・エラーメッセージ
調べたところ、下記サイトに、上記が実現できそうな内容が掲載されていました。
上記サイトのコードを適用してみましたところ、前半のctx.webというところまでは取得出来てそうなのですが、後半部分でエラーが出力されました。
(ですので、sharepoint自体にはアクセスできてそうなのですが…)
本筋としては、sharepoint上の何等かのデータフォーマットのデータを取得して、dataframeにしたいだけなので、何か良い方法などありましたら、上記方法に限らず、ご教示いただくことは可能でしょうか。
Value Error: Excel file format cannot be determined, you must specify an engine manually.
該当のソースコード
url = 'https://yoursharepointsite.com/sites/documentsite' username = 'yourusername' password = 'yourpassword' relative_url = '/sites/documentsite/Documents/filename.xlsx' ctx_auth = AuthenticationContext(url) if ctx_auth.acquire_token_for_user(username, password): ctx = ClientContext(url, ctx_auth) web = ctx.web ctx.load(web) ctx.execute_query() print "Web title: {0}".format(web.properties['Title']) else: print ctx_auth.get_last_error() # ↑ここまでは正常に動いて、Titleも取得できた。 import io import pandas as pd response = File.open_binary(ctx, relative_url) #save data to BytesIO stream bytes_file_obj = io.BytesIO() bytes_file_obj.write(response.content) bytes_file_obj.seek(0) #set file object to start #read file into pandas dataframe df = pd.read_excel(bytes_file_obj) ↑ここで、上記のようなエラーが出た。 # 追記:ここで、read_csvを行うと、データが取得され、 {"error": code:"-2147024809", System.ArgumentException...} のようなデータが取得された。(respoinse.contentの中身をprintで確認しても実際上記のようなものが入っていた。)
試したこと
sharepoint上のExcelファイルからデータを取得するための方法を試してみた。
補足情報(FW/ツールのバージョンなど)
pandas 1.4.3
Office365-REST-Python-Client 2.3.14
python 3.10.5
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/09/11 22:40