Pythonは、Excelを読んで浮動小数点数、日付フォーマットのデジタルソリューションです

Excelファイルの内容:

 

Excelを読みます

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

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


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

    デフread_excel(自己、ファイル名、シート名):
        ファイル名、シート名= self.decode(ファイル名、シート名)
        rbook = xlrd.open_workbook(ファイル名)
        シート= rbook.sheet_by_name(シート名)
        行= sheet.nrows
        COLS = sheet.ncols
        all_content = []
        範囲(行)でのiについて:
            row_content = []
            範囲(COLS)でjに対して:
                セル= 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'
    シート名=「シート1」
    eh.read_excel(ファイル名、シート名)
コードをコピー

出力:

【 'シェーピング'、 '175.0']
[「文字列」、「最後の騎士」]
[ 'フロート'、 '6.23']
[ '日付'、'42、909.6461574' ]
[ 'ヌル' '']
[ 'ブール'、 '1']

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

 

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

コードをコピー
        範囲(行)でのiについて:
            row_content = []
            範囲(COLS)でjに対して:
                ctype = sheet.cell(i、j)は.ctypeの#テーブルデータ型
                印刷CTYPE、
                セル= sheet.cell_value(i、j)は
                row_content.append(セル)
            all_content.append(row_content)
            プリント
            印刷 '[' + ' '参加( "'" + STR(要素)+ "'" row_contentの要素について)+ ']'
コードをコピー

出力:

コードをコピー
1 2
【 'シェーピング'、 '175.0']
1 1
[「文字列」、「最後の騎士」]
1 2
[ 'フロート'、 '6.23']
1 3
[ '日付'、'42、909.6461574' ]
1 0
[ 'ヌル' '']
1 4
[ 'ブール'、 '1']
コードをコピー

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


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

 

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

 

最終的なコード:

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

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


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

    デフread_excel(自己、ファイル名、シート名):
        ファイル名、シート名= self.decode(ファイル名、シート名)
        rbook = xlrd.open_workbook(ファイル名)
        シート= rbook.sheet_by_name(シート名)
        行= sheet.nrows
        COLS = sheet.ncols
        all_content = []
        範囲(行)でのiについて:
            row_content = []
            範囲(COLS)でjに対して:
                ctype = sheet.cell(i、j)は.ctypeの#テーブルデータ型
                セル= sheet.cell_value(i、j)は
                場合のctype == 2とセル%1 == 0:#成形した場合
                    セル= INT(セル)
                elifのctype == 3:
                    #DateTimeオブジェクトに回し
                    日付=日時(* xldate_as_tuple(セル、0))
                    セル= date.strftime( '%Y /%のD /%mの%のH:%のM:%のS')
                elifのCTYPE == 4:
                    セル= Trueのセル== 1はfalseであれば
                row_content.append(セル)
            all_content.append(row_content)
            印刷 '[' + ' '参加( "'" + STR(要素)+ "'" row_contentの要素について)+ ']'
        all_content戻ります


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

出力:

[ 'シェーピング'、 '175']
[「文字列」、「最後の騎士」]
[ 'フロート'、 '6.23']
[ '日付'、 '2017/23/06夜03時30分28秒']
[ 'ヌル' '']
[ 'ブール'、 '真の']

転送します。https://www.cnblogs.com/xxiong1031/p/7069006.html

おすすめ

転載: www.cnblogs.com/liuyanhang/p/11078479.html