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

问题描述 投票:0回答:1

我正在做一个任务,我们有很多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.

python xlsxwriter
1个回答
1
投票

我再次。但现在,有了一个答案。这是非常愚蠢的解决方案.一个简单的变量增量做了一个技巧。就在第一个循环之后。我只是添加了p = p + 1和wualaa所有的数据都在一个xlsx文件。

所以在上面。

for i in range(number_of_rows):

而对于写入者来说,只是改变了行计数器。

wr_worksheet.write(p, x, values)

啊啊啊啊啊啊啊... ... 谢谢你

© www.soinside.com 2019 - 2024. All rights reserved.