<p>这可能会有帮助。。。它尽可能地复制您的数据(日期保持为日期,空单元格不变成包含0长度内容的文本单元格,布尔值和错误单元格不变成数字单元格)。</p>
<pre><code>from xlrd import XL_CELL_EMPTY, XL_CELL_TEXT, XL_CELL_NUMBER,
XL_CELL_DATE, XL_CELL_BOOLEAN, XL_CELL_ERROR, open_workbook
from xlwt import Row, easyxf, Workbook
method_for_type = {
XL_CELL_TEXT: Row.set_cell_text,
XL_CELL_NUMBER: Row.set_cell_number,
XL_CELL_DATE: Row.set_cell_number,
XL_CELL_ERROR: Row.set_cell_error,
XL_CELL_BOOLEAN: Row.set_cell_boolean,
}
date_style = easyxf(num_format_str='yyyy-mm-dd')
other_style = easyxf(num_format_str='General')
def append_sheet(rsheet, wsheet, wrowx=0):
for rrowx in xrange(rsheet.nrows):
rrowvalues = rsheet.row_values(rrowx)
wrow = wsheet.row(wrowx)
for rcolx, rtype in enumerate(rsheet.row_types(rrowx)):
if rtype == XL_CELL_EMPTY: continue
wcolx = rcolx
wmethod = method_for_type[rtype]
wstyle = date_style if rtype == XL_CELL_DATE else other_style
wmethod(wrow, wcolx, rrowvalues[rcolx], wstyle)
wrowx += 1
return wrowx
if __name__ == '__main__':
import sys, xlrd, xlwt, glob
rdpattern, wtfname = sys.argv[1:3]
wtbook = Workbook()
wtsheet = wtbook.add_sheet('guff')
outrowx = 0
for rdfname in glob.glob(rdpattern):
rdbook = open_workbook(rdfname)
rdsheet = rdbook.sheet_by_index(0)
outrowx = append_sheet(rdsheet, wtsheet, outrowx)
print outrowx
wtbook.save(wtfname)
</code></pre>