簡體   English   中英

使用 xlrd 讀取包含中文和/或印地語字符的 Excel xls 文件

[英]Using xlrd to read Excel xls file containing Chinese and/or Hindi characters

http://scienceoss.com/read-excel-files-from-python/comment-page-1/#comment-1051

從上面的鏈接,我使用這個實用程序來讀取一個 XLS 文件。 如果 XLS 文件包含不同的語言字符,如中文或印地語,則無法正確輸出。 有解決方法嗎?

谷歌搜索后,我發現了這個:

import xlrd

def upload_xls(dir,file,request):
    try:
        global msg
        global row_num
        row_num = []
        header_arr = []
        global file_path
        file_path = dir
        #reader = csv.reader(open(file), delimiter='#', quotechar='"')
        book = xlrd.open_workbook('dodgy.xls',encoding='cp1252')   ##To specify UTF8-encoding
        wb.sheet_names()
        sh =  wb.sheet_by_index(0)
        valid_xl_format = 0
        invalid_xl_format = 0
     except:
        print "Error

但是在行book = open_workbook('dodgy.xls',encoding='cp1252')有一個錯誤:

TypeError: open_workbook() got an unexpected keyword argument 'encoding'

[dis]claimer: 我是 xlrd 的作者。

如果 xls 包含不同的語言字符,如中文或印地語。它不會輸出確切的措辭。是否有解決方法。

encoding_override 參數(如文檔中所述)僅用於舊文件(由早於 Excel 97(即 1997 年)的 Excel 生成),並且僅在內部記錄的“代碼頁”丟失或不正確時使用。

注意:帶有中文字符的舊文件:用 'cp1252' 覆蓋肯定會引發異常。

注意:帶有“印地語”(梵文?)字符的舊文件:不太可能......據我所知,從來沒有任何 ISCII 腳本有官方支持的代碼頁,我也沒有聽說過任何非官方的代碼頁。 非常歡迎有關此主題和/或示例文件的任何信息。

Excel 97 及更高版本以(有效)UTF-16LE 記錄所有文本數據。 如果文件是有效的 Excel-97 或更高版本的文件,則 encoding_override 將被忽略。

無論生成文件的 Excel 版本是什么,(如文檔所述)xlrd 都會返回 unicode 字符串。 您的問題更有可能與您如何顯示或轉換這些 un​​icode 字符串有關。

如需進一步幫助,請編輯您的問題以顯示實際輸出的示例以及“確切的措辭”。

根據 xlrd模塊文檔,正確的參數是: encoding_override="cp1252"而不是encoding="cp1252"

從您導入 xlrd 模塊的方式來看,您應該將函數調用為xlrd.open_workbook但在示例代碼中您直接使用該函數,就像您使用from xlrd import *

標准庫中有一個 csv 模塊,它處理 Python 3.1 中的 unicode。

警告:在Python 2.x中的CSV庫處理Unicode的。

有一個類似的問題。 答案是輸出導致問題,而不是 XLRD。

回答如何將腳本設置為 UTF-8 -> https://stackoverflow.com/a/17628350/713

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM