質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

0回答

1849閲覧

jupyterlab上で、作成し保存したexcelファイルを開くことができません。(python3)

gor

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2021/04/28 17:10

編集2021/04/29 04:56

前提・実現したいこと

jupyterlabをエディタとし、python3を用いて、url = https://kabuoji3.com/stock/1305/2019/ の中に入っている2019年の「ダイワ上場投信信託ートピックス」の株価を抽出し、Excelファイルに記録する作業をしています。
excelファイルの作成にopenpyxlライブラリを使用しています。

発生している問題・エラーメッセージ

作成したexcelのセルに抽出した株価を記入し、その表を「1305ダイワ上場投信-トピックス.xlsx」というexcelファイル名で保存しました。

しかしその後、jupyterlabに保存された「1305ダイワ上場投信-トピックス.xlsx」のexcelファイルを開こうとしても、C:\Users\kengo\Desktop\mypandas\1305 ダイワ 上場投信-トピックス.xlsx is not UTF-8 encodedというエラーメッセージが出てexcelファイルを開くことができません。

初歩的なことかもしれませんがわかりません。よろしければご教授お願い致します。

エラーメッセージ C:\Users\kengo\Desktop\mypandas\1305 ダイワ 上場投信-トピックス.xlsx is not UTF-8 encoded

該当のソースコード

python 3 ソースコード !pip install bs4 !pip install requests !pip install openpyxl !pip install pandas import pandas as pd import requests import openpyxl from bs4 import BeautifulSoup code = 1305 year = 2019 url = 'https://kabuoji3.com/stock/' + str(code) + '/' + str(year) + '/' headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36 Edg/90.0.818.46"} soup = BeautifulSoup(requests.get(url, headers = headers).content, 'html.parser') title = soup.find('span',attrs={'class':'jp'}).text #Excelファイルを作成 wb = openpyxl.Workbook() ws = wb.active ws.title = str(title) ws['A1'].value = '日付' ws['B1'].value = '始値' ws['C1'].value = '高値' ws['D1'].value = '安値' ws['E1'].value = '終値' ws['F1'].value = '出来高' ws['G1'].value = '終値調整' #株価を取り出す Table = soup.find('table',attrs={'class':'stock_table'}) Tables = Table.find_all('tr') for i in range(1,len(Tables)): TR = Tables[i].find_all('td') for j,k in enumerate(TR,1): new_cell = ws.cell(row=(i+1),column=j) new_cell.value = k.text #ワークブックをエクセルファイルとして保存 wb.save(str(title) + '.xlsx')

試したこと

.xlsxはバイナリーファイルであるから、jupyterlabで開くことはできないと考え、.xlsxファイルを.csvファイルに変換する方法を試みた。

https://genchan.net/it/programming/python/8144/

上記のurlにある、エクセル(Excel)→csvの欄のサンプルコードに自分のファイル名を当てはめてもうまくいかなかった。
文字がUTF-8ではないか調べたがよくわかりませんでした。

https://ja.stackoverflow.com/questions/49982/jupyter%e3%81%aecsv%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%ae%e8%aa%ad%e3%81%bf%e8%be%bc%e3%81%bf%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6
過去の似た質問↑

補足情報(FW/ツールのバージョンなど)

anaconda3でpythonの環境構築をしました。
以下にpythonおよびimportしたパッケージのバージョン情報を記載します。
python 3.8.5
BeautifulSoup4 4.9.3
bs4 0.0.1
jupyterlab 2.2.6
openpyxl 3.0.5
pandas 1.1.3
pip 20.2.4

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sasakaman

2021/04/28 21:32

同コードを実行し、libre officeでxlsxファイルを開きましたが、問題なく開くことができました。 状況を完全に再現するため、pythonおよびimportしたパッケージのバージョン情報を記載してください。 また、xlsxファイルをcsvファイルに変換するのではなく、csvファイルに直接書き込むのはうまくいきませんか? pythonにはcsvモジュールがあるので、そちらを試してみてください。
takasima20

2021/04/28 21:40

スクリプトをシフトJISで保存してるんじゃ?
gor

2021/04/29 05:06

質問の返信ありがとうございます! 次からはパッケージのバージョン情報を必ず載せるようにします。 一度csvモジュールを使ってファイルを作成してみます。 またスクリプトの確認方法やその変更方法も調べてみます。
gor

2021/04/29 05:14 編集

質問の返信ありがとうございます! 次回からバージョン情報を忘れずに記載したいと思います。 csvモジュールで一度試してみます。 スクリプトの確認方法とその変更方法を調べようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問