Python-読む、xlrdモジュールのExcelの浮動小数点数である、日付形式のデジタルソリューション

Excelファイルの内容:

 

Excelを読みます

コードをコピー
#コーディング= UTF-8 
輸入xlrd 
輸入のsys 

リロード(SYS) 'UTF-8')sys.setdefaultencoding 
輸入トレースバック


クラスexcelHandleを:
    DEF(自己、ファイル名、シート名)デコード:
        試してみてください。
            ファイル名= filename.decode( 'UTF- 8 ')
            シート名= sheetname.decode(' UTF-8' )
        の例外を除いて:
            印刷traceback.print_exc()
        戻りファイル名、シート名

    DEF read_excel(自己、ファイル名、シート名):
        ファイル名、シート名= self.decode(ファイル名、シート名)
        rbook = xlrd.open_workbook(ファイル名)
        シート= rbook.sheet_by_name(シート名)
        行= sheet.nrows 
        COLS = sheet.ncols
        all_content = [] 
        のIの範囲内の(行):
            row_content = [] 
            jについての範囲内(COLS):
                細胞= sheet.cell_value(i、j)は
                row_content.append(セル)
            all_content.append(row_content)
            印刷'[' + ' '( "'" + STR(要素)+ "'" row_contentの要素のために)参加する+ ']'。
        リターンall_content 


場合__name__ == '__main__':
    EH = excelHandle()
    ファイル名= r'G:\テストの\ ctype.xls' 
    シート名= 'Sheet1の' 
    eh.read_excel(ファイル名、シート名)
コードをコピー

出力:

[ '整形'、 '175.0'] 
[ '文字列'、 '最後の騎士'] 
[ 'フロート'、 '6.23'] 
[ '日付'、'42、909.6461574' ] 
[ 'nullを' ''] 
[ 'ブール'、 '1']

あなたはすべての文字列の日付小数に点出力が、出力を浮動数字によると、見ることができますか?ブール1または0を出力

 

コードのマイナーな変更:見て、テーブルのデータ型

コードをコピー
        :Iの範囲内の(行)のため
            row_content = [] 
            jについての範囲内(COLS):
                CTYPE = sheet.cell(i、j)は.ctype#表格的数据类型
                印刷CTYPE、
                セル= sheet.cell_value(i、j)は
                row_content.append(セル)
            all_content.append(row_content)
            印刷
            印刷'[' + ' '参加( "'" row_contentにおける要素の+ STR(要素)+ "'")+ ']'
コードをコピー

出力:

コードをコピー
12 
[ '整形'、 '175.0'] 
1 
[ 'string'は、 '最後ナイト'] 
12 
[ 'フロート'、 '6.23'] 
13 
[ '日'、'42、909.6461574' ] 
1 0 
[ 'NULL'、 ''] 
14 
[ 'ブール'、 '1']
コードをコピー

Pythonは、上記の例のCTYPEで、すなわち5つのタイプ、内に戻されるセルの内容を読み出すに優れ。


CTYPE:0、空、1列、2数、3日、4ブール、5エラー

 

だから、何CTYPEを決定し、それに適切な治療を行います。

 

最終的なコード:

コードをコピー
#コーディング= UTF-8 
インポートxlrd 
インポートSYSの

リロード(SYS) 'UTF-8')sys.setdefaultencoding 
インポートトレースバック
日時インポート日時から
xlrdインポートxldate_as_tupleのから


:クラスexcelHandle 
    DEF(自己、ファイル名、シート名)デコード:
        試す:
            ファイル名= filename.decode( 'UTF-8')
            シート名= sheetname.decode( 'UTF-8')
        の例外を除いて:
            印刷traceback.print_exc()
        戻りファイル名、シート名

    DEF read_excel(自己、ファイル名、シート名):
        ファイル名、シート名= self.decode(ファイル名、シート名)
        rbook = xlrd.open_workbook(ファイル名)
        シート= rbook.sheet_by_name(シート名)
        行= sheet.nrows 
        COLS = sheet.ncols 
        all_content = [] 
        の範囲でI(行)のために:
            row_content = [] 
            の範囲内のjについて(COLS):
                CTYPE = sheet.cell(I、 J).ctype#表格的数据类型
                細胞= sheet.cell_value(i、j)の
                場合のctype == 2とセル%1 == 0:#是如果整形
                    細胞= INT(セル)
                ELIF用のctype == 3: 转成日時对象の
                    日付=日時(* xldate_as_tuple(セル、0))
                    セル= date.strftime( '%Y /%D /%mの%のH:%M:%のS')
                ELIFのCTYPEの== 4: 
                    セル== 1はfalseであれば真セル= 
                row_content.append(セル)
            all_content.append(row_content)
            印刷'[' + ' '参加( "'" + STR(要素)+ "'" row_contentの要素について) + ']' 
        戻りall_content 


場合__name__ == '__main__':
    EH = excelHandle()
    ファイル名= r'G:\テスト\のctype.xls' 
    シート名= 'Sheet1の' 
    eh.read_excel(ファイル名、シート名)
コードをコピー

出力:

[ '整形'、 '175'] 
[ '文字列'、 '最後の騎士'] 
[ 'フロート'、 '6.23'] 
[ '日付'、 '2017/23/06午前15時30分28秒'] 
[ 'ヌル' ''] 
[ 'ブール' '真の']

 

おすすめ

転載: www.cnblogs.com/yuanfang0903/p/11596804.html