現在、ファイルをcsvからxlsxに変換しています。問題は、データがすべてデフォルトですべて文字列に変換されることです。どのように数字を変換することができますか(通常、+ 1.50000000000E + 009または "+ 1.50000000000E + 009"(先頭のスペース)を文字列から数字表現に変換できます)タイプキャスティングおよび一般的な回避策を試しましたが、何も動作しません。 CSVファイルは、ヘッダを持っているので文である "IF"。Python;科学記号表記の文字列番号
def csv_to_excel(csv_path, delimiter, delimiter_txt, excel_path, excel_title):
csv_file = open(csv_path, 'r')
csv.register_dialect(delimiter_txt, delimiter=delimiter)
reader = csv.reader(csv_file, dialect=delimiter_txt)
wb = Workbook()
ws = wb.worksheets[0]
ws.title = excel_title
for row_index, row in enumerate(reader):
for column_index, cell in enumerate(row):
column_letter = get_column_letter((column_index + 1))
if row_index > 3:
ws.cell('%s%s'%(column_letter, (row_index + 1))).value = float(cell)
else:
ws.cell('%s%s'%(column_letter, (row_index + 1))).value = cell
print(cell)
print(type(cell))
wb.save(filename = excel_path)
csv_file.close()
csv_to_excel( 'file.csvになり'、 ''、 'カンマ'、 'file.xlsx'、 'データ')
ありがとうございました!どんな助けも素晴らしいでしょう!
を返す 'フロート( '+ 1.50000000000E + 009')'すでに現在の答えが示唆されているものである 'フロート(セル)を'使用しているように見えます –
に動作します。それはどうしたらうまくいかないのですか? –
答えが示唆しているように、型キャスティングが機能するはずです。あなたの2番目の 'ws.cell = ...'は最初のものと同じように型キャスト操作をしていないのでしょうか? – MadisonCooper