xlwt.Workbook()でワークシートの列数の値を返す方法が見つからないようです。アイデアは、ディレクトリ内の.xlsファイルの札束を取り、それらを1つに結合することです。私が抱えている問題の1つは、次のファイルを書き込むときに列の位置を変更することです。これは私がこれまで取り組んできたものです:
import xlwt, xlrd, os
def cbc(rd_sheet, wt_sheet, rlo=0, rhi=None,
rshift=0, clo=0, chi=None, cshift = 0):
if rhi is None: rhi = rd_sheet.nrows
if chi is None: chi = 2#only first two cols needed
for row_index in xrange(rlo, rhi):
for col_index in xrange(clo, chi):
cell = rd_sheet.cell(row_index, col_index)
wt_sheet.write(row_index + rshift, col_index + cshift, cell.value)
Dir = '/home/gerg/Desktop/ex_files'
ext = '.xls'
list_xls = [file for file in os.listdir(Dir) if file.endswith(ext)]
files = [Dir + '/%s' % n for n in list_xls]
output = '/home/gerg/Desktop/ex_files/copy_test.xls'
wbook = xlwt.Workbook()
wsheet = wbook.add_sheet('Summary', cell_overwrite_ok=True)#overwrite just for the repeated testing
for XLS in files:
rbook = xlrd.open_workbook(XLS)
rsheet = rbook.sheet_by_index(0)
cbc(rsheet, wsheet, cshift = 0)
wbook.save(output)
list_xlsは以下を返します:
['file2.xls', 'file3.xls', 'file1.xls', 'copy_test.xls']
ファイルは以下を返します:
['/home/gerg/Desktop/ex_files/file2.xls', '/home/gerg/Desktop/ex_files/file3.xls', '/home/gerg/Desktop/ex_files/file1.xls', '/home/gerg/Desktop/ex_files/copy_test.xls']
私の質問は、xlwt.workbookに書き込まれた各ファイルを毎回2ずつスクートする方法です。このコードは、に保存された最初のファイルを提供し.../copy_test.xls
ます。ファイル一覧にも問題はありませんか?あるかもしれない気がします。これはPython2.6で、WindowsとLinuxの間を行き来しています。
GMさん、ご協力ありがとうございます