1

私の C# (.NET 4.5) Windows Forms アプリでは、Excel Interop を使用して、コードをここから次のように調整しました (Resharper によってグレー表示された冗長なものを削除し、「不足している」引数の前に「Type.」を追加します (大文字と小文字を次のように変更します)。アッパー):

private void WriteListObjectTestSheet()
{
    _xlSheetPlatypus.Cells[5, 1] = "Apple";
    _xlSheetPlatypus.Cells[6, 1] = "Strawberry";
    _xlSheetPlatypus.Cells[7, 1] = "Cashew";
    _xlSheetPlatypus.Cells[8, 1] = "Kumquat";
    _xlSheetPlatypus.Cells[9, 1] = "Pomegranate";
    _xlSheetPlatypus.Cells[10, 1] = "Banana";
    _xlSheetPlatypus.Cells[11, 1] = "Pineapple";
    _xlSheetPlatypus.Cells[12, 1] = "Kiwi";
    _xlSheetPlatypus.Cells[13, 1] = "Huckleberry";
    _xlSheetPlatypus.Cells[14, 1] = "Gooseberry";

    Excel.ListObject fruitList =
        _xlSheetPlatypus.
            ListObjects.Add(Excel.XlListObjectSourceType.xlSrcRange,
                _xlSheetPlatypus.Range[
                    _xlSheetPlatypus.Cells[4, 1],
                    _xlSheetPlatypus.Cells[4, 1]], 
                Type.Missing, Excel.XlYesNoGuess.xlNo);
}

ListObject は必要に応じて行 4、列 1 (または "A") に追加され、"果物" がセルに書き込まれますが、行 5 ("Apple" があるはずです) からではなく、行 6 から開始されます。ここで確認できます(不要な空白行が強調表示されています):

ここに画像の説明を入力

それには (もっと多くの) があるかもしれませんが、これは、ListObject が何を並べ替えてフィルター処理するかわからない理由の少なくとも一部である可能性があります。

ここに画像の説明を入力

空白行 5 が追加されるのはなぜですか?どうすればそれを防ぐことができますか?

4

1 に答える 1

1

範囲から作成しListObject、テーブルにヘッダーがないと言った場合、範囲を 1 行下に移動してColumn1セルを追加します。

上記のコードでは、からテーブルを作成する[4,1][4,1]言い、テーブルにはヘッダーがないと言ったので、1 行のテーブルを作成し、Column1ヘッダーを追加して、すべてを 1 行下に移動します。したがって、結果は、あなたが優れていると言ったことです。

正しい範囲を指定し、ヘッダーがあると言うことで修正できます。

以下のコードでは、最初に at を追加Header[4,1]、次に果物を追加し、最後に to からリストを作成し[4, 1][14, 1]テーブルにヘッダーがあることを示しています。だからそれは私のヘッダーを保持します。

using XL = Microsoft.Office.Interop.Excel;

private void button1_Click(object sender, EventArgs e)
{
    XL.Application application = new XL.Application();
    application.Visible = true;
    XL.Workbook book = application.Workbooks.Add();
    XL.Worksheet sheet = (XL.Worksheet)book.Worksheets[1];
    sheet.Cells[4, 1] = "Header";
    sheet.Cells[5, 1] = "Apple";
    sheet.Cells[6, 1] = "Strawberry";
    sheet.Cells[7, 1] = "Cashew";
    sheet.Cells[8, 1] = "Kumquat";
    sheet.Cells[9, 1] = "Pomegranate";
    sheet.Cells[10, 1] = "Banana";
    sheet.Cells[11, 1] = "Pineapple";
    sheet.Cells[12, 1] = "Kiwi";
    sheet.Cells[13, 1] = "Huckleberry";
    sheet.Cells[14, 1] = "Gooseberry";

    XL.ListObject fruitList = 
        sheet.ListObjects.Add(XL.XlListObjectSourceType.xlSrcRange,
            sheet.Range[sheet.Cells[4, 1], sheet.Cells[14, 1]], 
                Type.Missing, XL.XlYesNoGuess.xlYes);
}

ここに画像の説明を入力 ここに画像の説明を入力

于 2015-12-04T20:51:13.110 に答える