2016-02-17 72 views
3

我使用openpyxl打開.xlsx文件,更新其中的一些值並將其另存爲不同的.xlsx文件。我想,以添加新行頁腳在它:在openpyxl生成的XLSX文件中正確渲染新行

# example code 
wb = openpyxl.load_workbook('file.xlsx') 
sheet = wb.get_sheet_by_name('Sheet1') 
sheet.header_footer.left_footer.font_size = 7 
sheet.header_footer.left_footer.text = '&BSome text&B\nMore text\nEven more' 
sheet.header_footer.right_footer.font_size = 7 
sheet.header_footer.right_footer.text = 'Page &P of &N' 
wb.save('new_file.xlsx') 

但是當我打開新創建的文件,並期待在頁腳,\n以一種不可思議的方式被替換:

Some text^lMore text^pEven more 

我有還注意到,如果我嘗試在libreoffice的幫助下將其轉換爲PDF,例如像這樣:

os.system('libreoffice --headless --invisible --convert-to pdf --outdir /path/on/disk new_file.xlsx') 

生成的PDF渲染出來再不同的東西:

Some text_x000D_More text_x000D_Even more 

我怎樣才能正確地產生在頁腳新的生產線?
(可能是值得一提的是,我在Ubuntu使用openpyxl 2.3.3與Python 3.4的14.04。LibreOffice的版本是5.0.5.2)

回答

1

Excel的頁眉和頁腳使用一個奇怪的控制碼格式,其中\n由XML替換爲x000D。頁腳是正確的,但LibreOffice沒有正確渲染它。

+1

啊,沒錯。我設法在Windows機器上找到Microsoft Excel,並在那裏正確渲染出來。我知道這是一個有點不同的問題,但是有沒有針對這個問題的一些建議的解決方法? – errata