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

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

新規登録して質問してみよう
ただいま回答率
85.39%
openpyxl

openpyxlは、Excel2007以降のファイル(xlsx/xlsm/xltx/xltm)を読み書きするためのPythonライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

221閲覧

PythonでExcelを編集後にCSV形式で出力

d-hayahsi

総合スコア17

openpyxl

openpyxlは、Excel2007以降のファイル(xlsx/xlsm/xltx/xltm)を読み書きするためのPythonライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2024/06/27 06:07

編集2024/06/27 06:11

実現したいこと

openpyxlライブラリを用いてExcelファイルを読み込み、新しいシートの各セルに数式を実行した後の値をCSV形式で出力したいです。

発生している問題・分からないこと

編集後のExcelをpandasで読み込み、to_csv()を使ったところ、空のCSVファイルを出力された。

該当のソースコード

Python

1import openpyxl 2import csv 3import pandas as pd 4 5# Excelファイルを読み込む 6path = "sample.xlsx" 7wb = openpyxl.load_workbook(path) 8 9 10# 新しいシートを作成 11  ・ 12  ・ 13  ・ 14 15# ファイルを保存 16wb.save('output_sample.xlsx') 17 18data = pd.read_excel('output_sample.xlsx', sheet_name=new_sheet_name) 19data.to_csv("output.csv", index=False, encoding='shift_jis')

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

Chat GPT4o

Python

1import pandas as pd 2from openpyxl import load_workbook 3 4# Excelファイルのパスとシート名を指定 5excel_file_path = 'path_to_your_excel_file.xlsx' 6sheet_name = 'Sheet1' # 読み込みたいシート名 7 8# openpyxlでExcelファイルを読み込む 9wb = load_workbook(filename=excel_file_path, data_only=True) 10ws = wb[sheet_name] 11 12# シートのデータを行ごとにリストとして取得 13data = [] 14for row in ws.iter_rows(values_only=True): 15 row_data = [cell if cell is not None else "" for cell in row] 16 data.append(row_data) 17 18# データをDataFrameに変換 19df = pd.DataFrame(data) 20 21# CSVファイルに書き出し 22csv_file_path = 'output.csv' 23df.to_csv(csv_file_path, index=False, header=False) 24print(f"CSVファイル '{csv_file_path}' にデータを出力しました。") 25

補足

特になし

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

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

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

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

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

meg_

2024/06/27 06:23

> 編集後のExcelをpandasで読み込み、to_csv()を使ったところ、空のCSVファイルを出力された。 データフレームとしては問題ないが、「to_csv()」を使用すると何故か空になってしまうという現象が起きているという事でしょうか?
d-hayahsi

2024/06/27 06:28

コメントありがとうございます。 確認した所、データフレーム自体が空でした。 Excelの関数は「read_csv()」では読み込めないようです。 何か良い方法はありますでしょうか?
guest

回答1

0

ベストアンサー

Excelの関数は「read_csv()」では読み込めない

ということではなく、基本的にExcelの関数はExcelにしか(再)計算できません。

openpyxl はExcelではないので、計算式の結果の値を得ることはできません。

pythonでそういうことをするのであれば、xlwingsを使う手があります。これは、pythonからExcelを起動し、そのExcelを制御するという動作をします。なので、Excelがインストールされていないと動きませんが、計算式の処理をすることができます。

投稿2024/06/27 06:42

TakaiY

総合スコア13559

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

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

d-hayahsi

2024/06/27 07:19

回答ありがとうございます。pandasの内部ではopenpyxlが動いているという事ですね。また、openpyxlはExcelの計算(関数の実行)はできないのですね。 xlwingsはExcelがインストールされていないと動作しないとのことですが、そのような場合でも実現できる方法はありませんでしょうか?
TakaiY

2024/06/27 07:57

Excelの関数や数式はExcelでしか計算できないので、Excel無しでは無理でしょう。 「pandasの内部ではopenpyxlが動いている」という理解は違います。 どこでそう理解されたのかわかりませんが、pandasとopenkyxlは無関係です。
TakaiY

2024/06/27 07:59

Excelの数式や関数を使わずにpythonで計算して結果をセルに書き込むという方法はあるでしょう。 そうするのであれば、途中でxlsxに書き出す必要もなくなります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.39%

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

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

質問する

関連した質問