2016-04-27 7 views
2

Я хочу добавить несколько листов в одну книгу.Добавить новый лист в книгу в 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() 

Но что он делает это только создает лист, соответствующий «C.csv», а не к «A.csv» и «B.csv» Из того, что я получил, это потому, что каждый раз, когда он петли создает новую книгу. Я хочу создать 3 листа в одной книге.

Кроме того, есть одно условие, я хочу инициализировать конструктор рабочей книги внутри цикла.

+1

Почему вы должны инициализировать конструктор рабочей книги внутри цикла? – Abbas

ответ

3

Вот пример кода, однако он имеет конструктор рабочей книги вне цикла for и делает то, что вы ищете!

Input 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() 

ВЫВОД

enter image description here

Смежные вопросы