Как объединить 3 фала xls в один xlsx
Есть 3 файла xls - Hyundai.xls, nalichie_1_3.xls, peugeot_citroen.xls c данными, формат всегда одинаковый, необходимо из этих файлов скопировать столбцы B, E, F, H на один лист продолжая друг друга в один xlsx - general.xlsx (так как кол-во строк будет большое)
Вот что есть на данный момент, но это для одного файла, как добавить следом такие же данные из двух других файлов?
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import xlrd, xlwt, zipfile, zlib, xlsxwriter
import os
def freaks(in_filename=None, out_filename=None):
if not os.path.isfile(in_filename):
return None
book = xlrd.open_workbook(in_filename, on_demand=True)
bookfreaks = xlsxwriter.Workbook('general.xlsx')
worksheet = bookfreaks.add_worksheet('Sheet1')
worksheet.write(0,0,'Артикул')
worksheet.write(0,1,'Склад')
worksheet.write(0,2,'Стоимость')
worksheet.write(0,3,'Кратность заказа')
sheet = book.sheet_by_index(0)
i=0
for row_index in range(sheet.nrows):
if row_index < 1:
continue
i = i + 1
worksheet.write(i,0,sheet.cell(row_index, 1).value) # Артикул
worksheet.write(i,1,sheet.cell(row_index, 4).value) # Склад
worksheet.write(i,2,sheet.cell(row_index, 5).value) # Стоимость
worksheet.write(i,3,sheet.cell(row_index, 7).value) # Кратность
bookfreaks.close()
print("Обработано %d строк\n" % i)
freaks('Hyundai.xls','general.xlsx')
Ответы (1 шт):
Автор решения: Денис
→ Ссылка
Вопрос решен, способ со словарем [] подошел, если кому пригодиться ниже код
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import xlrd, xlwt, zipfile, zlib, xlsxwriter
import os
def general(in_filenames=[], out_filename=None):
bookgeneral = xlsxwriter.Workbook('general.xlsx')
worksheet = bookgeneral.add_worksheet('Sheet1')
worksheet.write(0,0,'Артикул')
worksheet.write(0,1,'Склад')
worksheet.write(0,2,'Стоимость')
worksheet.write(0,3,'Кратность заказа')
i=0
for in_filename in in_filenames:
if not os.path.isfile(in_filename):
return None
book = xlrd.open_workbook(in_filename, on_demand=True)
sheet = book.sheet_by_index(0)
for row_index in range(sheet.nrows):
if row_index < 1:
continue
i = i + 1
worksheet.write(i,0,sheet.cell(row_index, 1).value) # Артикул
worksheet.write(i,1,sheet.cell(row_index, 4).value) # Склад
worksheet.write(i,2,sheet.cell(row_index, 5).value) # Стоимость
worksheet.write(i,3,sheet.cell(row_index, 7).value) # Кратность
print("Обработано %d строк\n" % i)
bookgeneral.close()
general(in_filenames=[
'Hyundai.xls',
'nalichie_1_3.xls',
'peugeot_citroen.xls',
],
out_filename='general.xlsx')