假設存在具有指定列樣式的現有.xlsx
文件。作爲最小示例創建一個空的sample.xlsx
文件,並通過單擊列A
將其編號樣式設置爲Percent
(與默認的General
相比)。使用openpyxl中新單元格的列樣式
現在,執行下面的代碼
import openpyxl as pyxl
import math
sample = 'sample.xlsx'
new = 'sample_new.xlsx'
wb = pyxl.load_workbook(sample)
ws = wb.active
ws['A1'] = math.pi
print 'Cell format is %s' % ws['A1'].number_format
wb.save(new)
打印的輸出是Cell format is General
。當sample_new.xlsx
在Excel
中打開時,A1
單元格的內容的確爲3.1415926
,單元格樣式爲General
。有趣的是,如果在LibreOffice Calc
中打開,則按需要顯示該單元格314.16%
並且單元格樣式爲Percent
。
但是,如果在原有sample.xlsx
文件一是直接設置單元格A1
的財產,而不是整個A
-column,格式化工作既是在Excel
和LibreOffice
預期,而該代碼打印Cell format is Percent
。
在實踐中,我需要追加到現有的.xlsx
文件,保留原始列格式(可能因文件而異)。我如何實現這一目標?
我使用的是2.4.0版本的openpyxl。
好的,但我可以動態地做到嗎?我不知道列的格式,但它是在給定的'.xlsx'文件中指定的。我可以在openpyxl中獲得列格式嗎? –
另外,有沒有任何想法爲什麼'LibreOffice'展示不同(和理想)的格式? –
是的,你可以在工作簿中查找相關的'ColumnDimension'。 LO和MS Excel是與使用交互很重要的應用程序,openpyxl是一個文件格式庫。我們可能會在未來的某個時候重新審視這些功能,但目前這確實是一種反模式,可能會減慢速度,我寧願我們儘可能快。 –