为什么我的Excel Interop代码中的字体大小设置为?

我在我的代码中设置了一个范围的字体大小:

var rowRngRptTitle = _xlSheet.Range[_xlSheet.Cells[2, 1], _xlSheet.Cells[2, 13]]; rowRngRptTitle.Merge(Type.Missing); rowRngRptTitle.Font.Size = 24; rowRngRptTitle.Font.Bold = true; rowRngRptTitle.Value2 = String.Format("Delivery Performance - {0} - {1}", _delPerfBeginDate.ToShortDateString(), _delPerfEndDate.ToShortDateString()); 

…但值不生效,或“粘” – 字体大小很小(看起来像10,与未configuration的范围相同)。

但是,如果稍后将其设置,在整个工作表编写后,通过创build一个新的范围:

 var rowRngRptTitle2 = _xlSheet.Range[_xlSheet.Cells[2, 1], _xlSheet.Cells[2, 13]]; rowRngRptTitle2.Merge(Type.Missing); rowRngRptTitle2.Font.Size = 24; rowRngRptTitle2.Font.Bold = true; 

…它的作品 – 字体大小确实是24而不是10。

什么可以取消早期设置的大小? 在引用该范围的整个代码中没有其他的“Font.Size =”。 在一些更多的情况下,这里是代码(不必要的effluvia消除):

 private void PopulateSheet(string shortName) { if (_xlSheet != null) { var rowRngUnitName = _xlSheet.Range[_xlSheet.Cells[1, 1], _xlSheet.Cells[1, 13]]; rowRngUnitName.Merge(Type.Missing); rowRngUnitName.Font.Bold = true; rowRngUnitName.Font.Size = 16; rowRngUnitName.Value2 = shortName; var rowRngRptTitle = _xlSheet.Range[_xlSheet.Cells[2, 1], _xlSheet.Cells[2, 13]]; rowRngRptTitle.Merge(Type.Missing); rowRngRptTitle.Font.Size = 24; rowRngRptTitle.Font.Bold = true; rowRngRptTitle.Value2 = String.Format("Delivery Performance - {0} - {1}", _delPerfBeginDate.ToShortDateString(), _delPerfEndDate.ToShortDateString()); . . . _xlSheet.Columns.AutoFit(); } FreezePane(FIRST_DATA_ROW, SUN_ORDERS_COLUMN); var rowRngRptTitle2 = _xlSheet.Range[_xlSheet.Cells[2, 1], _xlSheet.Cells[2, 13]]; rowRngRptTitle2.Merge(Type.Missing); rowRngRptTitle2.Font.Size = 24; rowRngRptTitle2.Font.Bold = true; ConfigureForPrinting(_xlSheet.UsedRange.Rows.Count); if (null != _xlSheet) { Marshal.ReleaseComObject(_xlSheet); } } 

如果我不得不重新指定范围,我想要一个不同于标准/通用/默认的字体大小,这将是一个痛苦; 有没有办法保留范围的初始字体大小分配?

我这样初始化Excel应用程序:

 private void InitializeExcelObjects() { _xlApp = new Excel.Application { SheetsInNewWorkbook = 1, StandardFont = "Calibri", StandardFontSize = 10 }; _xlBook = _xlApp.Workbooks.Add(Type.Missing); _xlApp.Windows.Application.ActiveWindow.DisplayGridlines = false; _xlSheets = _xlBook.Worksheets; _xlSheet = (Microsoft.Office.Interop.Excel.Worksheet)_xlSheets.Item[1]; }