2012-11-26 101 views
0

我正在從現有的Excel創建一個新的Excel。在我的老excel中有3 Sheets,說first,second,third。我能夠成功複製第一張表格的內容,這是基於某種條件,即我的代碼在while index < 3 :之前工作得很好。對於表secondthird我想複製它們,因爲它們在original excel sheet。但是,當複製開始爲second片我得到一個錯誤: -使用xlrd和xlwt修改Excel

sheet1 = w.add_sheet('Info') 
File "/usr/local/lib/python2.7/site-packages/xlwt/Workbook.py", line 331, in add_sheet 
raise Exception("duplicate worksheet name %r" % sheetname) 

我的代碼如下: -

newexcel = "newexcel.xls" 
    count = 0 
    wb = xlrd.open_workbook('/home/sam/myexcel.xls') 
    w = Workbook() 
    sheet = w.add_sheet('Input_Resource') 
    index = 0 
    s = wb.sheet_by_index(index) 
    if index < 1 : 
     index =+ 1 
     for row in range(s.nrows): 
      coln =0 
      val = s.cell(row,coln).value 
      if val in MissingId : 
       mylist.append(val) 
       count += 1 
      else: 
       for col in range(s.ncols): 
        val = s.cell(row,col).value 
        sheet.write(row-count,col,val) 
    while index < 3 : 
     if index == 1 : 
      sheet1 = w.add_sheet('Info') 
     else : 
      sheet2 = w.add_sheet('Sheet3') 

     s = wb.sheet_by_index(index) 
     index =+ 1 
     for row in range(s.nrows): 
      coln =0 
      val = s.cell(row,coln).value 
      for col in range(s.ncols): 
       val = s.cell(row,col).value 
       if index == 1: 
        sheet1.write(row,col,val) 
       else : 
        sheet2.write(row,col,val) 
w.save(newexcel) 

任何幫助或暗示的讚賞:)

+0

你能否提供一個鏈接到你使用的myexcel.xls文件 –

+0

看看[SSCCE](http://sscce.org),我相信如果你遵循這個方法你可以減少你的代碼問題,甚至可能發現究竟出了什麼問題。它在過去幫助過我。 –

+0

你解決了這個問題嗎?如果你有問題,請更新問題,否則我會再去看看。 –

回答

0

下面的一些想法用於支票複印:

import xlwt 

wb = xlwt.Workbook() 
#Adding 2 sheets 
ws1 = wb.add_sheet('One') 
ws2 = wb.add_sheet('Two') 

sheets = wb._Workbook__worksheets #Getting sheets list 
sheet_names = [] #List for shhets names 
for sheet in sheets: 
    sheet_names.append(
     sheet.get_name() #getting sheet name 
     ) 
print sheet_names 
print True if u"One" in sheet_names else False #check for our name 
wb.save('test.xls') 

結果:

$python simple.py 
[u'One', u'Two'] 
True