18

Excel ワークブック (xls/xlsx) に新しいワークシートとしてダンプしたい csv ファイルがいくつかあります。どうすればこれを達成できますか?

Googleで「pyXLwriter」を見つけましたが、プロジェクトが停止したようです。「pyXLwriter」を試している間、代替案/提案/モジュールはありますか?

どうもありがとう。

[編集]

これが私の解決策です:(誰かがもっと無駄のない、多くのpythonicの解決策を持っていますか?コメントしてください.thx)

import glob
import csv
import xlwt
import os

wb = xlwt.Workbook()


for filename in glob.glob("c:/xxx/*.csv"):
    (f_path, f_name) = os.path.split(filename)
    (f_short_name, f_extension) = os.path.splitext(f_name)
    ws = wb.add_sheet(str(f_short_name))
    spamReader = csv.reader(open(filename, 'rb'), delimiter=',',quotechar='"')
    row_count = 0
    for row in spamReader:
        for col in range(len(row)):
            ws.write(row_count,col,row[col])
        row_count +=1

wb.save("c:/xxx/compiled.xls")

print "Done"
4

6 に答える 6

28

「はるかにスリムで、多くのpythonic」が何を意味するのかはわかりませんが、確かに少し整えることができます。

import glob, csv, xlwt, os
wb = xlwt.Workbook()
for filename in glob.glob("c:/xxx/*.csv"):
    (f_path, f_name) = os.path.split(filename)
    (f_short_name, f_extension) = os.path.splitext(f_name)
    ws = wb.add_sheet(f_short_name)
    spamReader = csv.reader(open(filename, 'rb'))
    for rowx, row in enumerate(spamReader):
        for colx, value in enumerate(row):
            ws.write(rowx, colx, value)
wb.save("c:/xxx/compiled.xls")
于 2011-04-25T10:36:57.237 に答える
12

このxlwt チュートリアルで必要なものがすべて見つかります。このライブラリ ( xlrd および xlwt ) は、Python で Excel の対話を管理するための最も一般的な選択肢です。欠点は、現時点では Excel バイナリ形式 (.xls) しかサポートされていないことです。

于 2011-04-18T16:27:36.460 に答える
4

xlsxwriter を使用して、Python で Excel ファイルを作成して書き込みます。

インストール方法: pip install xlsxwriter

import xlsxwriter


# Create an new Excel file and add a worksheet.
workbook = xlsxwriter.Workbook('demo.xlsx')
worksheet = workbook.add_worksheet()

# Widen the first column to make the text clearer.
worksheet.set_column('A:A', 20)

# Add a bold format to use to highlight cells.
bold = workbook.add_format({'bold': True})

# Write some simple text.
worksheet.write('A1', 'Hello')

# Text with formatting.
worksheet.write('A2', 'World', bold)

# Write some numbers, with row/column notation.
worksheet.write(2, 0, 123)
worksheet.write(3, 0, 123.456)

# Insert an image.
worksheet.insert_image('B5', 'logo.png')

workbook.close()
于 2016-09-09T17:36:52.487 に答える
3

私は常に、Office 2003 XML 形式を文字列で記述します。xlsx ドキュメントを構成するものを作成して圧縮するよりも、非常に簡単に実行でき、管理もはるかに簡単です。また、外部ライブラリも必要ありません。(簡単に自分で巻くことができますが)

また、Excel は CSV ファイルの読み込みをサポートしています。スペース区切りまたは文字区切りの両方。直接ロードするか、コピーして貼り付けてから、オプションの [テキストから列へ] ボタンを押します。もちろん、このオプションは python とは何の関係もありません。

于 2011-04-18T16:19:28.373 に答える