2017-12-22 21 views
-2

Python 2.7では、Excelに変換したいcsvファイルがたくさんあります。 csvファイルの名前はabcd1.csv,abcd2.csvなどです。 abcd1.xlsabcd2.xlsなどに変換したいです。 私は1つのファイルでそれを行うことができますが、私は複数のファイルでそれを行う方法がわかりません。複数のcsvファイルをExcelファイルに変換しますか?

これは私がこれまで使用してきた機能である:

from openpyxl import Workbook 
import csv 

wb = Workbook() 
ws = wb.active 
file_name = "COUNT16_DISTRIBUTION" + str(count3*1) + ".csv" 
with open(file_name, 'r') as f: 
    for row in csv.reader(f): 
     ws.append(row) 
wb.save() 

file_nameには、whileループで使用することができ、私は、各csvファイルを通過することができますが、私は.xlsとして保存する方法を知りません。ここで

+0

https://superuser.com/questions/301431/how-to-batch-convert-csv-to-xls-xlsxは、仕事をするのでしょうか? – Hennich

+0

別の解決法は 'pandas'を使うことです。 –

+0

コードを関数に変換し、 'glob.glob()'または 'os.listdir()'を使って、新しい関数に渡す必要のあるファイルを特定します。 – martineau

答えて

-1

はパンダとの例です。

import pandas as pd 
import os 

# Create function that converts csv 2 excel 
def csv2excel(filepath, sep=','): 
    df = pd.read_csv(filepath, sep=sep) 
    newpath = os.path.splitext(filepath)[0] + '.xlsx' 
    df.to_excel(newpath, index=False) 

# Loop through files and call the function 
for f in os.listdir('.'): 
    if f.endswith('.csv') and f.startswith('abcd'): 
     csv2excel(f) 
+0

ifループでは、iiがcsvファイルをたくさん持っている場合、どうすれば 'f.endswith'何か複数のcsvファイルの名前を取る何か? CSVファイルがたくさんありますが、私はそれらのすべてに触れたくありません。私は与えられた名前の人だけに触れたい。私はfilename = "COUNT16_DISTRIBUTION" + str(count3 * 1)+ ".csv"を試しています。その後、forループでインクリメントし、ディレクトリ内の次のファイルを調べます。 – anvinder

+0

パターンabcd1.csv、abcd2.csv、abcd3.csvなどがあります。これはパターンです。私はabcd1.xls、abcd2.xlsなどとして保存したいと思います。私の初期コードでは、これを行うことはできましたが、 xlsファイルを開くと破損します。 – anvinder

+0

@anvinder 'f.startswith( 'abcd')'の追加については、編集したコードを参照してください。 –

関連する問題