我正在做一个任务,我们有很多xlsx文件,每个文件大约有100行,我想用xlsxwriter把它们合并成一个新的大xlsx文件。是否可以用一个循环来完成,这将读和写同时进行?
我可以读取文件,我可以创建一个新的文件。在第一次运行时,我可以将所有单元格写入新文件,但当我检查文件时,它覆盖了最后读取文件的实际值。所以,我只得到了行数变量与前一个文件中的行数不一样的部分。
这是我写的代码。
#!/usr/bin/env python3
import os
import time
import xlrd
import xlsxwriter
from datetime import datetime
from datetime import date
def print_values_to():
loc = ("dir/")
wr_workbook = xlsxwriter.Workbook('All_Year_All_Values.xlsx')
wr_worksheet = wr_workbook.add_worksheet('Test')
# --------------------------------------------------------
all_rows = 0
for file in os.listdir(loc):
print(loc + file)
workbook = xlrd.open_workbook(loc + file)
sheet = workbook.sheet_by_index(0)
number_of_rows = sheet.nrows
number_of_columns = sheet.ncols
all_rows = all_rows + number_of_rows
dropped_numbers = []
for i in range(number_of_rows): # -------- number / number_of_rows
if i == 0:
all_rows = all_rows - 1
continue
for x in range(number_of_columns):
type_value = sheet.cell_value(i, x)
if isinstance(type_value, float):
changed_to_integer = int(sheet.cell_value(i, x)) # ----
values = changed_to_integer # -----
elif isinstance(type_value, str):
new_date = datetime.strptime(type_value, "%d %B %Y")
right_format = new_date.strftime("%Y-%m-%d")
values = right_format
# write into new excel file
wr_worksheet.write(i, x, values)
# list of all values
dropped_numbers.append(values)
# print them on the console
print(dropped_numbers)
# Writing into new excel
# wr_worksheet.write(i, x, values)
# clear list of values for another run
dropped_numbers = []
print("Number of all rows: ", number_of_rows)
print("\n")
wr_workbook.close()
我看了xlsxwrite的指导,但它并没有确切地告诉我这是不可能的.所以我还是希望我可以以某种方式安排它.
For any idea many thaanks.
我再次。但现在,有了一个答案。这是非常愚蠢的解决方案.一个简单的变量增量做了一个技巧。就在第一个循环之后。我只是添加了p = p + 1和wualaa所有的数据都在一个xlsx文件。
所以在上面。
for i in range(number_of_rows):
而对于写入者来说,只是改变了行计数器。
wr_worksheet.write(p, x, values)
啊啊啊啊啊啊啊... ... 谢谢你