使用 python xlsxwriter 阅读更多 xlsx 文件并在一个循环中写入新文件?

Read more xlsx files and write into new one in one loop with python xlsxwriter?

我正在处理一项任务,其中我们有许多 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 指南,但没有明确说明这是不可能的。 所以我还是希望能安排一下。

如有任何想法,非常感谢。

又是我。但现在,有了答案。这真是愚蠢的解决方案。 一个简单的变量递增就成功了。在第一个循环之后。我刚刚添加了 p = p + 1 和 wualaa,所有数据都在一个 xlsx 文件中。

所以在上面:

for i in range(number_of_rows): # ------ number / number_of_rows p = p + 1

并且作者刚刚更改了行计数器:

wr_worksheet.write(p, x, 值)

啊啊啊啊啊…… 非常感谢。