简体   繁体   English

Python / Excel-将.xlsx工作簿从文件合并到.csv

[英]Python/Excel - Merge .xlsx workbooks from file into .csv

Attempting to compile multiple .xlsx workbooks from a file into a single .csv 尝试将多个.xlsx工作簿从一个文件编译为单个.csv

Loop I've created is only capturing the first workbook from the file. 我创建的循环仅从文件中捕获第一个工作簿。

How can I alter this to capture all workbooks in a file? 如何更改它以捕获文件中的所有工作簿? Data is only on Sheet1 from all workbooks 数据仅在所有工作簿的Sheet1上

import os
import xlrd
import csv

rootdir = r'C:\Users\username\Desktop\Mults'
filenames = []
for subdir, dir, files in os.walk(rootdir):
   for file in files:
      filenames.append(os.path.join(subdir, file))
      wb = xlrd.open_workbook(os.path.join(subdir, file))
      sh = wb.sheet_by_index(0)
      with open('acit_multsTEST.csv','wb') as f:
        c = csv.writer(f)
        for r in range(sh.nrows):
            c.writerow(sh.row_values(r))

I appreciate any help! 感谢您的帮助!

Thank you! 谢谢!

So you have to do the following. 因此,您必须执行以下操作。

  • Get a list of all the workbooks 获取所有工作簿的列表
  • Open a main csv to append all your data to 打开一个主csv,将所有数据附加到
  • Iterate through your list of workbooks 遍历您的工作簿列表
  • Append each sheet to your csv 将每个工作表附加到您的csv

     import glob import os import xlrd import csv ROOTDIR = r'C:\\Users\\username\\Desktop\\Mults' wb_pattern = os.path.join(ROOTDIR, '*.xlsx') workbooks = glob.glob(wb_pattern) with open('out.csv', 'wb') as outcsv: writer = csv.writer(outcsv) for wb in workbooks: book_path = os.path.join(ROOTDIR, wb) book = xlrd.open(book_path) sheet = book.sheet_by_index(0) for row_num in xrange(sheet.nrows): row = sheet(row_num) writer.writerow(row) 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM