2012-08-05 40 views
1

所以,我有一個QTableWidget的應用程序和要導入一個.xls文件:PyQt的打開文件對話框錯誤

def openfile(self): 
     filename = QtGui.QFileDialog.getOpenFileName(self, 'Open File', '/home', ".xls(*.xls)") 
     fname = open(filename) 
     with fname: 
      wb = xlrd.open_workbook(fname) 
      wb.sheet_names() 
      sh = wb.sheet_by_index(0) 
      for col in sh.ncols: 
       for i in col: 
        r = 0 
        c = 0 
        newItem = QtGui.QTableWidgetItem(i) 
        self.tableWidget.setItem(r, c, newItem) 
        r += 1 
       r = 0 
       c += 1 

但是,我得到這個錯誤:TypeError: coercing to Unicode: need string or buffer, file found

我做了什麼錯?

更新:

def openfile(self): 
      filename = unicode(QtGui.QFileDialog.getOpenFileName(self, 'Open File', '', ".xls(*.xls)")) 
      wb = xlrd.open_workbook(filename) 
      wb.sheet_names() 
      sh = wb.sheet_by_index(0) 
      self.first = sh.col_values(0) 
      self.r = 0 
      self.add() 

    def add(self): 
     for i in self.first: 
      str(i) 
      newItem = QtGui.QTableWidgetItem(i) 
      self.tableWidget.setItem(self.r, 0, newItem) 
      self.r += 1 

它的工作,但我不能加載數...... 只有串... 怪異......

UPDATE2:

def add(self): 
     for i in self.first: 
      newItem = QtGui.QTableWidgetItem(str(i)) 
      self.tableWidget.setItem(self.r, 0, newItem) 
      self.r += 1 

但它顯示所有數字爲浮動....

UPDATE3:

def add(self): 
     for i in self.first: 
      try: 
       newItem = QtGui.QTableWidgetItem(str(int(i))) 
      except ValueError: 
       newItem = QtGui.QTableWidgetItem(str(i))  
      self.tableWidget.setItem(self.r, 0, newItem) 
      self.r += 1 

問題解決了......

回答

1

xlrd.open_wookbook期望一個文件名(字符串),而不是fname(文件對象)。

嘗試:

 filename = QtGui.QFileDialog.getOpenFileName(self, 'Open File', '/home', ".xls(*.xls)") 
     wb = xlrd.open_workbook(filename) 
+0

現在我得到這樣的:filestr = mmap.mmap(f.fileno(),大小,訪問= mmap.ACCESS_READ) ValueError異常:MMAP偏移大於文件大小大 – Antoni4040 2012-08-05 12:41:18

+0

你可以如果'size'大於'f'的文件大小,則會出現此錯誤。如果這沒有幫助,請打開一個新的問題,並更詳細地說明'f'和'size'的定義。 – unutbu 2012-08-05 13:07:38

+0

什麼?我不明白... – Antoni4040 2012-08-05 13:11:42