xlrd:想要读取多个xl文件的表单并存储在一个列表/数组中? (更好的方法?)

我用xlrd / xlwt没有太多xp,但是我已经设法访问我想从中收集数据的文件之一。 我想从目录中的所有文件收集数据,并将其移动到一张纸上。 我在想,如果有的话,我可以将它们全部存储在一个数组/列表中,这将很容易输出到CSV文件。 如果这是太多的工作,并有一个简单的方法PLZ的帮助,否则我使用空闲玩弄的想法,并已经拿出这个到目前为止:

>>> import xlrd, xlwt >>> book = xlrd.open_workbook('c:\excelTry\Papineau.csv.xls') >>> book.sheet_names() [u'Charge Codes', u'Month'] >>> sh = book.sheet_by_index(1) >>> #produces: >>> sh.book <xlrd.Book object at 0x01213BF0> >>> for x in range(0, 10): sh.row_values(x) [u'William Papineau', u'Pay Period 11', '', '', u' ', u' ', '', '', '', u'Weekly Total', '', '', u' ', '', '', '', '', u'Weekly Total', u'Biweekly', u'Percent of Effort'] [u'Index Number', u'Index Description', 40678.0, 40679.0, 40680.0, 40681.0, 40682.0, 40683.0, 40684.0, '', 40685.0, 40686.0, 40687.0, 40688.0, 40689.0, 40690.0, 40691.0, '', u'Total', ''] [u'E45776', u'Seat Belt Study', '', 8.0, 8.0, 8.0, 8.0, u' ', '', 32.0, '', '', '', '', '', u' ', '', 0.0, 32.0, 0.4155844155844156] [u'E43457', u'MultiScaleWaterQuality', '', '', '', '', '', 8.0, '', 8.0, '', 5.0, 8.0, u' ', '', '', '', 13.0, 21.0, 0.2727272727272727] [u'E45125', u'GLOSS', '', '', '', '', '', '', '', 0.0, '', '', '', 8.0, 8.0, '', '', 16.0, 16.0, 0.2077922077922078] [u'E45131', u'GLOS AOC Trib Monitoring', '', '', '', '', '', '', '', 0.0, '', '', '', '', '', 8.0, '', 8.0, 8.0, 0.1038961038961039] 

这产生了看起来像一个列表对象,但我已经做了每一个操作或追加它的尝试产生错误,说不可脚本化或可迭代。 文件迭代将通过使用os.listdir(path)和for循环的os模块进行处理。 任何帮助将不胜感激!

到目前为止,在您的代码中,您似乎没有对从工作表中获取的值进行任何操作。 也许有些代码没有被粘贴到问题中…

你能够包含最后一行代码的输出吗?

你说你想把它全部存储在一个列表中。
尝试这样的事情:

 final = [] for rowx in xrange(sh.nrows): final.extend(sh.row_values(rowx)) 

也:
小心Windowspath。 只有在下面的字母没有反斜杠的情况下,单反斜杠才能起作用(如\t或制表符)。 其他选项(选项3可能是最好的;除非有特定的理由不使用它):

  1. 原始string: book = xlrd.open_workbook(r'c:\excelTry\Papineau.csv.xls')
  2. 正斜杠: book = xlrd.open_workbook('c:/excelTry/Papineau.csv.xls')
  3. os.path.join
    book = xlrd.open_workbook(os.path.join('c:','excelTry','Papineau.csv.xls'))
 data = [] for i in xrange(sh.nrows): data.append(sh.row_values(i)) it will append each rows from xls file into list "data". eg: [['a','b'],['c','d'],['e','f']] like this .