是否可以使用Excel::Writer::XLSX更改或聲明默認字體? 每次創建或添加圖表和單元格時,我都可以設置它。但我認爲應該有一個更簡單的方法。如何使用Excel :: Writer :: XLSX設置工作簿範圍的默認格式?
5
A
回答
3
也許吧。
免責聲明:的Excel ::作家:: XLSX的作者解釋說,這不是一個好主意,並不能保證工作here和here。
創建Format對象時,可以將屬性xf_index
設置爲0
。這會將該格式設置爲默認格式。
use Excel::Writer::XLSX;
my $workbook = Excel::Writer::XLSX->new('filename.xlsx');
# set the default format
$workbook->add_format(xf_index => 0, font => 'Comic Sans MS'); # I'm on Linux
my $worksheet = $workbook->add_worksheet();
$worksheet->write(0, 0, 'Hi Excel!'); # will be in Comic Sans
my $format = $workbook->add_format(font => 'Arial');
$worksheet->write(1, 1, 'In Arial!', $format);
這不是在文檔中描述,但reading the code解釋它。
即使您稍後添加更多格式,它也能正常工作。您不需要保留該初始調用的Format對象。它將在整個工作簿中使用(可能也在不同的工作表中,但我沒有測試過)。
我建議你解釋一下你在代碼註釋中做了什麼,因爲它確實不是很明顯。
經過一些額外的研究,我發現它在the PDF document OpenOffice.org's Documentation of the Microsoft Excel File Format,在第89頁底部的4.6.2章節(我的重點)中有解釋。
缺省單元格格式 總是出現在Excel文件中,由具有固定索引15(基於從0的)的XF記錄描述。 默認情況下,它使用第一個XF記錄(索引0)所描述的 工作表/工作簿默認單元樣式。
所以現在我們也知道它爲什麼是xf_index => 0
。
舊的答案與一般建議:
一般來說,這不是支持。你需要使用格式。 The docs say有Calibri大小爲11的默認格式。
默認格式爲Calibri 11,其他所有屬性都關閉。
你需要創建一個格式對象的格式,字體,字體大小等的特定組合,然後你可以重複使用,在整個在每個小區或圖表的文檔。如果其中一個選項在特定單元格中不同,則需要爲此創建一個額外的Format對象。
my $default_format = $workbook->add_format(font => 'Comic Sans');
# ...
$worksheet->write('A1', 'Cell A1', $default_format);
# later ...
$worksheet->write('Z3', 'Cell Z3', $default_format);
如果你需要很多不同的格式,但總是想用相同的字體,它可能是設置字體的字符串作爲格式散列和使用有用。
my %default_formatting = (font => 'Comic Sans');
my $bold_format = $workbook->add_format(%default_formatting, bold => 1);
甚至使子,有助於創建格式對象和已經知道的默認字體。
sub create_format {
my ($workbook, %formats) = @_;
return $workbook->add_format(font => 'Comic Sans', %formats);
}
# somewhere
my $bold_format = create_format($workbook, bold => 1);
$worksheet->write('A1', 'Cell A1', $bold_format);
這也將使扔掉的格式是這樣的:
$worksheet->write('D1', 'Weird stuff', create_format(
$workbook,
bold => 1,
strikeout => 1,
shadow => 1,
bg_color => 'pink',
));
相關問題
- 1. Perl Excel :: Writer :: XLSX公式不計算工作簿打開時
- 2. 如何使用OpenPyXl清除Excel工作簿中的值範圍
- 3. Excel VBA:設置工作簿級別的默認保存目錄
- 4. 使用表格範圍將範圍從Excel工作簿複製到另一個工作簿
- 5. 工作簿的Apache POI默認樣式
- 6. 使用EPPlus格式化Excel工作簿
- 7. 工作表和單元格和範圍的默認範圍是什麼?
- 8. 如何使用多列輸入設置默認範圍訂單
- 9. 使用R xlsx包有效地格式化整個excel工作簿
- 10. Excel 2016 - 如何在工作簿2範圍$ G:$ R中的工作簿1單元格A1中查找值?
- 11. Excel :: Writer :: XLSX - 如何凍結第一行
- 12. 如何將我的導出格式設置爲microsoft.office.interop.excel中的excel工作簿?
- 13. Excel :: Writer :: XLSX :: Chart :: Line - 問題
- 14. 如何設置默認應用程序路徑值的用戶範圍設置
- 15. 設置默認格式
- 16. 如何獲取工作簿的所有已使用範圍
- 17. Excel VBA設置爲可變到工作簿級別命名範圍
- 18. 在工作簿上默認啓用宏
- 19. 如何在XCode 4.x中設置默認的斷點範圍?
- 20. 使用數字作爲超鏈接的Excel :: Writer :: XLSX
- 21. 將粘貼範圍(使用設置值)複製到不同的工作簿
- 22. 如何複製.xlsx完整工作簿
- 23. 使用OpenXML格式化Excel 2013範圍
- 24. 如何使用Excel :: Writer :: XLSX自動調整列寬度
- 25. 用戶範圍應用設置始終重置爲默認值
- 26. Excel的VBA:複製範圍到一個新的工作簿
- 27. 通過Excel工作簿循環,複製各個單元格的範圍並粘貼到主工作簿中
- 28. 設置datepicker的默認日期格式?
- 29. Excel - VBA:如果語句不工作與「設置範圍= .Range(...)」
- 30. Excel VBA:獲取與範圍關聯的工作簿
你用什麼模塊?我在CPAN上找不到一個名爲「xlswriter」的人。 – zb226
我正在使用[this](http://search.cpan.org/~jmcnamara/Excel-Writer-XLSX/lib/Excel/Writer/XLSX/Chart.pm)之一。 – tsoomo
我找到了方法並更新了答案。 – simbabque