4

はい、この質問は以前にもありましたが、提供された回答は私には当てはまりません。もう少し詳しく言うと:

データがある場所にのみグリッド線を表示し(自分で追加します)、デフォルトで他の場所に表示される明るいグリッド線を完全に削除したいので、この受け入れられた答えを見つけました...しかし、うまくいきません。

このコードを使用してセットアップします。

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

...この Excel.Application の初期化はコンパイルされます (初期化子の外で_xlApp の DisplayGridLines プロパティに bool を割り当てます):

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

...しかし、これ(コードを初期化子に追加する)はコンパイルされません(「無効な初期化子メンバー宣言子」および「名前 'Windows'は現在のコンテキストに存在しません」):

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

...また、「Excel」でコンパイルしません。"Windows." の前に追加されますが、それが必要なようです ('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

プロジェクトの References フォルダーに既に Microsoft.Office.Interop.Excel.Windows があり、実際には .xlsx ファイルを正常に生成しています。私は現在、プロジェクトの「ジンジャーブレッド/仕上げ」の部分 (化粧品/フォーマット) に取り組んでいます。

コンパイル コードの場合でも、実際には機能しません。実行時に「System.NullReferenceException が処理されませんでした . . . オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されて失敗します。

では、グリッド線を「スレートをきれいに拭き取り」、明示的に適用したものだけをシートに表示するにはどうすればよいでしょうか。

4

1 に答える 1

2

_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;
于 2015-12-18T07:39:53.333 に答える