Python在Excel中打开写入CSV

时间:2018-05-26 20:20:55

标签: python python-3.x

我正在学习Python。

这是我正在尝试做的事情,按照我正在努力做的顺序:

  1. 打开Excel文件
  2. 查找所有工作表
  3. 获取每个工作表上的所有行并另存为csv
  4. 如果1个excel文件中有3个工作表,则应该有3个csv文件。
  5. 问题: 我似乎无法将行数写入工作表。

    我的代码:

    import os, csv, re, openpyxl
    
    file_storage = []
    excel_storage = []
    excel_columns = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
    rowData = []
    
    
    os.chdir('C:\\Users\\testing\\Desktop\\python\\chapter_14\\practice_project_files')
    
    print(str(os.getcwd()))
    
    
    for filenames in os.listdir():
        file_storage.append(filenames)
    
    for x in range(len(file_storage)):
        file_type = re.compile('.*\.xlsx')
        files_found = file_type.search(file_storage[x])
        if files_found:
            excel_storage.append(file_storage[x])
    
    
    for y in range(len(excel_storage)):
        wb = openpyxl.load_workbook(excel_storage[y])
        #print(wb.sheetnames)
        #print(str(len(wb.sheetnames)))
        for z in range(len(wb.sheetnames)):
            wb.active = z
            sheet = wb.active
            with open('test.csv', 'wb') as f:
                csvWriter = csv.writer(f)
                for r in range(1,sheet.max_row + 1):
                    for colNum in range(0, sheet.max_column ):
                        stuff = sheet[excel_columns[colNum] + str(r)].value
                        rowData.append(stuff)
                    csvWriter.writerow(r)
    
    
        wb.close()
    

    我的代码部分特别给我带来了问题:

    rowData.append(东西)

    csvWriter.writerow(r)的

    我收到的错误消息:

      

    可迭代的预期,而不是int

    我做错了什么?

1 个答案:

答案 0 :(得分:1)

您正尝试将行号写为CSV文件中的整行。将csvWriter.writerow(r)替换为csvWriter.writerow(rowData),并在rowData = []行前添加for colNum in ...