ADO.NETを使用すると、Excelシートに行を簡単に追加できます。
string fileName = @"D:\test.xlsx";
string connectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source={0};Extended Properties='Excel 12.0;HDR=YES;IMEX=0'", fileName);
using(OleDbConnection cn = new OleDbConnection(connectionString))
{
cn.Open();
OleDbCommand cmd1 = new OleDbCommand("INSERT INTO [Sheet1$] " +
"([Column1],[Column2],[Column3],[Column4]) " +
"VALUES(@value1, @value2, @value3, @value4)", cn);
cmd1.Parameters.AddWithValue("@value1", "Key1");
cmd1.Parameters.AddWithValue("@value2", "Sample1");
cmd1.Parameters.AddWithValue("@value3", 1);
cmd1.Parameters.AddWithValue("@value4", 9);
cmd1.ExecuteNonQuery();
}
上記のコードは、列名としてColumn1...を含むヘッダーを持つ最初の行があることを前提としています。また、コードはMicrosoft.Jet.OleDb.4.0の代わりにExcel2007または2010用のACEOleDBプロバイダーを使用します。
編集:名前付き範囲を参照するには、sqlコマンドをこれに変更できます
OleDbCommand cmd1 = new OleDbCommand("INSERT INTO [yourNamedRange] " +
"VALUES(@value1, @value2, @value3, @value4)", cn);
残念ながら、個々の列を参照する方法が見つかりません。