ändern Ich verwende Python, um meine CSV-Datei in Xlsx-Dateien zu konvertieren, geschieht die Konvertierung erfolgreich. Zur gleichen Zeit möchte ich auch den Zellennummern-Typ ändern, z. B. wo immer Float-Typ xx.xxxx ist, der auf .xx (2 Dezimalstellen) -Werte reduziert wird.Python: wie man Zellennummer mit xlsxwriter
Eingang test.csv Blatt, getrennt durch ""
Name Date Total request sas rate
rasta777 16062017 387865 89.3456
rasta777 16062017 291293 67.675
rasta777 16062017 256418 100
rasta777 16062017 251558 98.98
Ich habe bereits versucht, die folgenden Python-Skript xlsxwriter
verwenden, aber ein Fehler.
import os
import glob
import csv
from xlsxwriter.workbook import Workbook
for csvfile in glob.glob(os.path.join('.', 'hourly.csv')):
workbook = Workbook(csvfile + '.xlsx')
worksheet = workbook.add_worksheet()
format = workbook.add_format()
format.set_bold()
format.set_font_color('blue')
format.set_num_format('0x02')
format1 = workbook.add_format({'font_color': 'blue'})
with open(csvfile, 'rb') as f:
reader = csv.reader(f)
for r, row in enumerate(reader):
for c, col in enumerate(row):
worksheet.write(r, c, col)
worksheet.set_row(0, 20, format)
worksheet.set_column('A:P', format)
workbook.close()
immer Fehler, dass
"TypeError: unsupported operand type(s) for *: 'Format' and 'int'"
Mein zweites Problem Ausgang erzeugt wird (immer dann ausgegeben, wenn ich worksheet.set_column('A:P', format)
entfernen) gibt Zelltyp als Text, während meine Daten alle numerischen Werte außer Header ist.
Die erste Ausgabe wird wahrscheinlich verursacht durch einen Hex-Wert als String hinzugefügt wird. Versuchen Sie 0x2 statt oder nur 2. – jmcnamara
Das zweite Problem ist aufgrund der Tatsache, dass das CSV-Modul alle Daten in Strings lesen, auch wenn sie wie Zahlen aussehen. Sie können dies umgehen, indem Sie die Konstruktoroption 'strings_to_numbers' in XlsxWriter verwenden: .http: //xlsxwriter.readthedocs.io/workbook.html#constructor – jmcnamara
nach dem Hinzufügen strings_to_numbers, beide Probleme jetzt gelöst. Kann ich wissen, wie man float (.xx-Format) für nur bestimmte Spalte anwendet ??? Gemäß meiner Tabelle hat die 4. Spalte Gleitkommawerte. worksheet.set_column ('A: P', 18, format1) wendet format1-Parameter auf alle Spalten an. ich habe bereits ein format2 definiert, das 0x2 num type hat, wie fügt man das zur worksheet.set Zeile hinzu? – RNL