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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Python

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

zip

ZIPとは、複数のファイルをひとつにまとめて圧縮したり、圧縮したファイルを展開することができるアーカイブフォーマットです。 1998年以降のWindowsOS各バージョンで、標準の圧縮フォルダとして採用されています。 MacOSでも、X v10.3以降に他の圧縮ソフトとまとめてZIP機能を採用しています。

Q&A

1回答

2195閲覧

python(openpyxl) zipファイル(csv)→xlsxに処理、変換するには

ghost238_gen

総合スコア16

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Python

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

zip

ZIPとは、複数のファイルをひとつにまとめて圧縮したり、圧縮したファイルを展開することができるアーカイブフォーマットです。 1998年以降のWindowsOS各バージョンで、標準の圧縮フォルダとして採用されています。 MacOSでも、X v10.3以降に他の圧縮ソフトとまとめてZIP機能を採用しています。

0グッド

0クリップ

投稿2021/06/29 01:09

プログラミング初学者です。拙い質問かもしれませんが宜しくお願いします。
現在、Pythonの勉強を兼ねてopenpyxlでのエクセルファイルの処理を勉強しています。
やりたいこととしては、
・zipファイル内にある複数のcavファイルをそれぞれシートに変え、xlsx形式で保存したい
と考えています。

少しググってみた結果、zipファイルの中身を確認する方法と
xlsx形式で保存する方法はわかりましたが、
それぞれを連携させる方法がわからないので、ご教授頂きたいです。

python

1# zipファイルを読み込む 2import zipfile 3zf = zipfile.ZipFile('hogehoge.zip') 4lst = zf.namelist() 5print(lst) 6# ファイル名だけ渡されても、どうしろと。 7 8#フォルダのcsvをひとつのエクセルに 9import os 10import glob 11from pathlib import Path 12 13import openpyxl 14import csv 15 16csvfiles = glob.glob("root/*.csv", recursive=False) 17wb = openpyxl.Workbook() 18for file in csvfiles: 19 wb.create_sheet(os.path.splitext(os.path.basename(file))[0]) 20 #よくわからんけど空欄のシートができる 21 wb.active = wb.sheetnames.index(os.path.splitext(os.path.basename(file))[0]) 22 ws = wb.active 23 with open(file, encoding="shift-jis") as f: 24 reader = csv.reader(f, delimiter=',') 25 for row in reader: 26 ws.append(row) 27wb.save("完成.xlsx")

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

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

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

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

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

t_obara

2021/06/29 02:05

次は、zipファイルに含まれているファイルを取り出す方法を調査すれば良いのではないでしょうか。
guest

回答1

0

まず、zf.openを使ってzfからcsvをstrとして取り出します。

python

1>>> import zipfile 2>>> import csv 3>>> import io 4>>> 5>>> zf = zipfile.ZipFile('hogehoge.zip') 6>>> lst = zf.namelist() 7>>> print(lst) 8['test.csv'] 9>>> 10>>> with zf.open('test.csv') as f: 11... csv_bytes = f.read() 12... csv_str = csv_bytes.decode(encoding='cp932') 13... 14>>> print(type(csv_str)) 15<class 'str'> 16>>> print(csv_str) 17date,val 18202001,d 19202001,f 20202001,g 21202001,h 22202001,i

使い方は、ZipFile オブジェクトを読んでください。

次に、io.StringIOを使って、csv_strを指定してcsv.readerを作ります。

python

1>>> with io.StringIO(csv_str) as f: 2... reader = csv.reader(f, delimiter=',') 3... for row in reader: 4... print(row) 5... 6['date', 'val'] 7['202001', 'd'] 8['202001', 'f'] 9['202001', 'g'] 10['202001', 'h'] 11['202001', 'i'] 12

使い方は、class io.StringIOを読んでください。

あとは、ご自身のコードに組み込んでください。

投稿2021/06/29 02:14

ppaul

総合スコア24670

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問