問題
最近同事使用 Novacode 新增 Word 中 Table 的 Row 後,
原本標楷體的字型,卻變成了新細明體,
程式直接去改 Cell 的 Paragraphs 字型也不會變。
解法
原本程式大約如下,
取出範本那列的資料內容之中,Paragraph 是有設定字型的,如下,
1 | <w:p w14:paraId="26B70266" w14:textId="66CBD856" w:rsidR="00F008A1" w:rsidRPr="004D5C5C" w:rsidRDefault="001139E8" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"> |
但新增出來的卻是空空的,
1 | <w:p xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"> |
設定 cells 字型程式如下,
1 | var newRow = table.InsertRow(); |
加完之後,卻只有 Fonts ,但並沒有任何的字型,如下,
1 | <w:p xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"> |
依範例程式,在 Cell 中加入文字時,可以一併設定它的字型,如下,
1 | newRow.Cells[1].Paragraphs[0].Append("要加入的字串").Font("標楷體").FontSize(10); |
就可以設定 Cell 的字型,但卻是每個 Cell 都設定字型、大小等格式,
是否有什麼方式可以不用特別設定格式呢?
可以透過 InsertRow(Row row, bool keepFormatting = false)
的 Method。
所以第一列做為範本,在 for each 依資料新增列時,先加一筆資料,最後再將那個範本列移除,
程式碼類似,
1 | //第2列為範本列,第一列為表頭 |
透過以上的方式,每列的格式都一致了,