2012-10-19 87 views
1

我已經通過django創建了csv文件。我已將編碼的數據寫入該數據。但是當我在Excel表格中打開此文件時,unicode字符無法正確顯示。使用django創建csv文件並直接打開到Excel

我也提到了這個問題 Django create CSV file that contains Unicode and can be opened directly with Excel

但沒有得到正確的答案。我已經嘗試了所有的答案,但是沒有解決任何問題。

我寫下如下代碼。

def exportcsv(request): 
     import csv 
     producer_list = Producer.objects.filter() 
     response = HttpResponse(mimetype='text/csv') 
     response['Content-Disposition'] = 'attachment; filename=producer.csv' 
     writer = csv.writer(response, delimiter=",") 
     writer.writerow(codecs.BOM_UTF16_LE) 
     writer.writerow(['Produsenter','Type','Land','Region']) 
     for cdst in producer_list: 
      writer.writerow([cdst.title.encode("UTF-8"), 
          cdst.producer_type.encode("UTF-8"), 
          cdst.country.country.encode("UTF-8"), 
          cdst.region.region.encode("UTF-8")]) 
     return response 

然後csv文件正確創建,但在那個字符不正確編碼。 角色將顯示爲「TokajHÃtszölö」。

當我嘗試

writer.writerow([cdst.title.encode("iso-8859-1"), 
          cdst.producer_type.encode("iso-8859-1"), 
          cdst.country.country.encode("iso-8859-1"), 
          cdst.region.region.encode("iso-8859-1")]) 

然後數據我們增加也正常打開Excel文件正確。 但是它給字符串中的'æ'和''等字符提供了錯誤。

錯誤:拉丁-1'編解碼器無法編碼的字符U「\ u2013」​​在266位置:順序不在範圍內(256)

我也嘗試下面的代碼。

response['Content-Disposition'] = 'attachment; filename=producer.csv' 
response.write(u'\ufeff'.encode('utf8')) 
writer = csv.writer(response, delimiter=",") 

也可以嘗試

writer.writerow(codecs.BOM_UTF16_LE) 
writer.writerow(str.decode('utf8').encode('utf_16_le')) 
+0

W雖然這不是一個真正的答案,你應該嘗試tablib,它允許導出xls。 – bmihelac

回答

0

我已經解決了上述問題。我編寫代碼如下。

writer.writerow([cdst.title.encode("iso-8859-1"), 
       cdst.producer_type.encode("iso-8859-1"), 
       cdst.country.country.encode("iso-8859-1"), 
       cdst.region.region.encode("iso-8859-1")]) 

使用上述代碼我得到了誤差作爲

Error: 'latin-1' codec can't encode character u'\u2013' in position 266: ordinal not in range(256) 

但這錯誤是因爲空字符串的和「 - 」字符時,我傳遞給編碼。當我在將字符串傳遞給編碼之前設置條件並用'_'替換' - '字符時,可以解決這個問題。

0

你應該看看unicodecsv。它爲我解決了類似的問題。

+0

我已經使用這個。但同樣的迴應。 – Meenakshi

相關問題