3

是的,這個問題之前已經被問過了,但是提供的答案對我不起作用。更具體的:如何刪除Excel電子表格上的所有網格線,除了我在清除所有網格線後明確添加的網格線?

想要只有網格線有數據(我自己添加),並刪除在默認情況下出現在默認情況下更輕的網格線,我發現this accepted answer ...但它不起作用爲了我。

使用此代碼才能完成設置:

using Excel = Microsoft.Office.Interop.Excel; 
. . . 
private Excel.Application _xlApp; 

...這初始化一個Excel.Application 的編譯(分配BOOL到_xlApp的DisplayGridLines財產其初始化):

_xlApp = new Excel.Application 
{ 
    SheetsInNewWorkbook = 1, 
    StandardFont = "ponceDeLeon", 
    StandardFontSize = 11 
}; 
_xlApp.Windows.Application.ActiveWindow.DisplayGridlines = false; 

...但是這(添加代碼初始化)不會編譯(我得到的,「無效的初始成員聲明」和「‘視窗’這個名字並不在存在當前上下文「):

_xlApp = new Excel.Application 
{ 
    SheetsInNewWorkbook = 1, 
    StandardFont = "ponceDeLeon", 
    StandardFontSize = 11, 
    Windows.Application.ActiveWindow.DisplayGridlines = false 
}; 

...也不會用」Excel「進行編譯。 「窗口」。前置到,即使它似乎想那(提供導入「Microsoft.Office.Interop.Excel.Windows」,並在文件中的所有其他引用「)編譯器的抱怨是,那麼:

An object reference is required for the non-static field, method, or property 'Microsoft.Office.Interop.Excel.Windows.Application.get'" 

---和:

Invalid initializer member declarator 

我已經在我的項目的引用文件夾Microsoft.Office.Interop.Excel.Windows,事實上,我成功地生成.xlsx文件,我的「薑餅/完成「項目的一部分(化妝品/格式化)

即使在公司mpiling代碼,它實際上不工作 - 它在運行時失敗:「System.NullReferenceException未處理。 。 。對象引用未設置到對象的實例。」

所以,我怎麼能‘徹底清除’網格線,而只讓那些我在紙張上明確適用顯示?

回答

1

您需要設置_xlApp.Windows.Application.ActiveWindow.DisplayGridlines = false; 。在其他時間你要打開或先創建一個工作簿時設置的值在此之前,它應該工作的罰款

當您打開現有的Excel文件:。

 Excel.Application app = new Excel.Application(); 
     //app.ActiveWindow.DisplayGridlines = false;//Error 
     Excel.Workbooks workbooks = app.Workbooks; 
     //app.ActiveWindow.DisplayGridlines = false;//Error 

     workbooks.Open(filename); 
     app.ActiveWindow.DisplayGridlines = false;//No Error 

當你創建一個新的Excel文件:

 Excel.Application app = new Excel.Application(); 
     Excel.Workbook workbook = app.Workbooks.Add(System.Reflection.Missing.Value); 
     app.ActiveWindow.DisplayGridlines = false;