2016-11-14 73 views
0

假設存在具有指定列樣式的現有.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.xlsxExcel中打開時,A1單元格的內容的確爲3.1415926,單元格樣式爲General。有趣的是,如果在LibreOffice Calc中打開,則按需要顯示該單元格314.16%並且單元格樣式爲Percent

但是,如果在原有sample.xlsx文件一是直接設置單元格A1的財產,而不是整個A -column,格式化工作既是在ExcelLibreOffice預期,而該代碼打印Cell format is Percent

在實踐中,我需要追加到現有的.xlsx文件,保留原始列格式(可能因文件而異)。我如何實現這一目標?

我使用的是2.4.0版本的openpyxl。

回答

0

您必須手動設置所有單元格樣式。規範中的列和行樣式並不符合預期。它們是關於創建新單元格時應該怎麼做的應用程序的承諾。有各種各樣的原因,但速度是主要原因,爲什麼我們不在openpyxl中這樣做。

+0

好的,但我可以動態地做到嗎?我不知道列的格式,但它是在給定的'.xlsx'文件中指定的。我可以在openpyxl中獲得列格式嗎? –

+0

另外,有沒有任何想法爲什麼'LibreOffice'展示不同(和理想)的格式? –

+0

是的,你可以在工作簿中查找相關的'ColumnDimension'。 LO和MS Excel是與使用交互很重要的應用程序,openpyxl是一個文件格式庫。我們可能會在未來的某個時候重新審視這些功能,但目前這確實是一種反模式,可能會減慢速度,我寧願我們儘可能快。 –