Excel相互運用機能を使用するC#(。NET 4.5)Windowsフォームアプリでは、ここからコードを次のように調整しました(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(「アップル」があるべき場所)ではなく、行6から次のように書き込まれます。あなたはここで見ることができます(不要な空白行が強調表示されています):
それには(もっとたくさんの)があるかもしれませんが、これは、ListObjectがクリックされたときに提供されるオプションによって証明されるように、ListObjectが何をソートおよびフィルタリングするかを知らない理由の少なくとも一部である可能性があります:
空白行5が追加されるのはなぜですか?それを防ぐにはどうすればよいですか?
ListObject
範囲からを作成し、テーブルにヘッダーがないと言うと、範囲が1行下にシフトし、Column1
セルが追加されます。
上記のコードで、から[4,1]
にテーブルを作成する[4,1]
と言い、テーブルにはヘッダーがないと言ったので、1行のテーブルを作成し、Column1
ヘッダーを追加して、すべてのものを1行下にシフトします。したがって、結果はあなたがあなたのために行うのに優れているとあなたが言ったことです。
正しい範囲を指定し、ヘッダーがあると言うことで修正できます。
以下のコードでは、最初にHeader
at[4,1]
を追加し、次にフルーツを追加し、最後にfromから[4, 1]
toまでのリストを作成し[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);
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加