我們在C#中有Excel 2013-2016加載項。我們用下面的方法來get worksheet font:如何獲取默認的Excel工作表字體?
var defaultFont = Microsoft.Office.Interop.Excel.Worksheet.Cells.Font
一切工作,直到用戶改變了一些特定的細胞的字體。例如,用戶更改了單元格A1並設置了字體「Arial」。默認情況下,我們有字體「Calibri」。 此後,當我們嘗試通過Worksheet.Cells.Font
獲取默認字體時,我們什麼都沒有 - 只是空的對象。我認爲,由於含糊不清:A1有字體「Arial」,其他單元格 - 默認字體「Calibri」。我的目標是獲得默認字體,即「Calibri」。 到目前爲止,我重新寫我的代碼,現在我也檢查樣式:
var workbookFont = Microsoft.Office.Interop.Excel.Worksheet.Parent.Styles["Normal"].Font;
此解決方案將返回正是我需要的 - 我的「宋體」字體。但後來我發現,這是因爲該字體是所有新工作表/工作簿的默認字體(可以在Excel的選項中進行設置)。如果用戶選擇工作表中的所有單元格並將默認字體更改爲「Times New Roman」,那麼它將不起作用,那麼我將得到「Calibri」 - 因爲這是默認字體將在創建新工作表/工作簿時使用。當我無法獲取當前工作表的實際默認字體時,我又遇到了問題。我的下一個想法是在工作表的邊緣,是不是用戶像很多可用來獲得一些特定的細胞的字體:
var defaultFont = workSheet.Cells[1048576][16384].Font
它看起來很奇怪,但很有效。我假設用戶不使用工作表上的最後一個單元格。 (1048576和16384是max size of worksheet)。我不知道這些方法的含義,所以我想知道它是否存在一些「合法」的方式來獲取工作表的默認字體,沒有這樣的柺杖?