2016-04-27 13 views
2

1枚のブックにいくつかのシートを追加したいと思います。新しいシートをxlsxwriterのブックに追加

sheets = ["A.csv", "B.csv", "C.csv"] 
for sh in sheets: 
    workbook = xlsxwriter.Workbook('myxlsx.xlsx') 
    worksheet = workbook.add_worksheet(sh) 
    worksheet.write(1,1,"abcd") 
    workbook.close() 

しかし、それは私が持っているものを、それが毎回ためであるから、それだけに「A.csv」と「B.csv」 を「C.csv」に対応したシートを作成しないで何をしますかそれはループして新しいブックを作成します。同じワークブックに3枚のシートを作成したいと思います。

また、1つの条件があります。ループ内でのみブックのコンストラクタを初期化する必要があります。

+1

なぜあなたはループ内のワークブックのコンストラクタを初期化する必要がありますか? – Abbas

答えて

3

ここにサンプルコードがありますが、forループの外側にワークブックコンストラクタがあり、探しているものがあります。

入力CSVファイル:

enter image description here

サンプルコード

import os 
import glob 
import xlsxwriter 
import csv 

flist = [os.path.basename(x) for x in glob.glob(os.getcwd() + '\\*.csv')] 

workbook = xlsxwriter.Workbook('split_book.xlsx') 

for sh in flist: 
    worksheet = workbook.add_worksheet(sh) 
    with open(sh, 'rb') as f: 
     reader = csv.reader(f) 
     for r, row in enumerate(reader): 
      for c, col in enumerate(row): 
       worksheet.write(r, c, col) 

workbook.close() 

OUTPUT

enter image description here

関連する問題