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秒'] [ 'ヌル' ''] [ 'ブール' '真の']