Der von der Python-Bibliothek openpyxl geschriebene Wert wird im exponentiellen Anzeigeformat mit E angezeigt.
sample_code.py
import openpyxl
wb = openpyxl.open('./Book1.xlsx')
sh = wb['Sheet1']
sh.cell(row=1, column=1).value = 308985489249593041
wb.save('./result.xlsx')
Ergebnis Selbst wenn die Anzeige mit entfernter Exponentialfunktion erfolgt, werden einige der Endungen durch Nullen ersetzt, was ein Problem darstellt.
Probleme mit den Spezifikationen von Excel anstelle von openpyxl
Wenn Sie mehr als 15 Stellen in eine Excel-Zelle eingeben, werden alle Zahlen, die länger als 15 sind, in 0 geändert.
[Durch Eingabe einer langen Nummer in eine Excel-Zelle wird die letzte Nummer in 0 geändert](https://docs.microsoft.com/en-us/office/troubleshoot/excel/last-digits-changed-to- von Nullen)
Bei der numerischen Berechnung scheint es kein Problem zu sein, wenn die Genauigkeit geringfügig verringert wird, wenn die Anzahl der Stellen so groß ist. Es ist ein Problem, wenn Sie so etwas wie eine ID, eine Cleca-Nummer oder sogar eine einzelne Ziffer schreiben.
Schreiben Sie einfach eine Zahl als Zeichenfolge
sample_code.py
import openpyxl
wb = openpyxl.open('./Book1.xlsx')
sh = wb['Sheet1']
#Ich werde den hier zu schreibenden numerischen Wert str-Typ machen
sh.cell(row=1, column=1).value = str(308985489249593041)
wb.save('./result.xlsx')
Ich bin wütend, weil dies eine Zeichenfolge oder eine Zahl ist, die mit Apostrophie beginnt, aber ich könnte sie schreiben Übrigens kann die Berechnung in Excel normal durchgeführt werden, auch wenn dieser Fehler auftritt.
sample_code.py
import openpyxl
wb = openpyxl.open('./result.xlsx')
sh = wb['Sheet1']
A1_value = sh.cell(row=1, column=1).value
print(A1_value)
print(type(A1_value))
'''
> 308985489249593041
> <class 'str'>
Es scheint als Zeichenkette erworben zu werden Ich muss es wieder durch int ersetzen
Die folgenden Artikel wurden in den Kommentaren vorgestellt. Geben Sie das Anzeigeformat von Zahlen mit openpyxl an
Deshalb
Ich habe einige Formate an sh.cell (row =, colum =) übergeben. Number_format =
.
Die zu schreibende Nummer ist dieselbe wie oben 308985489249593041
In dem in Spalte A angegebenen Format ist Spalte B das Ergebnis
Oh, es ist unglaublich. Das Format hat sich richtig geändert.
Aber leider kann das Ende auf 0 geändert werden ...
Es ist ein B2- oder Zeichenkettenformat, aber es scheint unmöglich, wenn es zum Zeitpunkt des Schreibens ein int-Typ ist ...
Gibt es eine intelligentere Problemumgehung? Sie können die Obergrenze mit einem Excel-Plug-In freigeben Wenn Sie es wissen, lassen Sie es mich bitte wissen
Recommended Posts