7

〜10列と1〜20行のExcelファイルがあります。さまざまなデータ要素を含む1〜20行を挿入する必要があります。

いくつかのタグをExcelファイルに入れて、それらを見つけて置き換える方法があるかどうか疑問に思いました。列を「名前」としてマークするもの。そのようにコードで私はただ言うことができます:

Name[0] = object.name;

この正確な方法が可能かどうかはわかりませんが、実際には手間のかかる作業は必要ありません。Excelファイルは時間の経過とともに変更される可能性があるため、セルの場所をハードコーディングする必要はありません。

また、非表示の「ID」セルを行に追加する必要があります。でも後でその橋を渡れると思います。

4

2 に答える 2

14

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);

残念ながら、個々の列を参照する方法が見つかりません。

于 2012-08-27T19:54:48.100 に答える
7
    private Excel.Application app = null;
    private Excel.Workbook workbook = null;
    private Excel.Worksheet worksheet = null;
    private Excel.Range workSheet_range = null;
    private const int FIRTSCOLUMN= 0 //Here const you will use to select good column
    private const int FIRSTROW= 0
    private const int FIRSTSHEET= 1

    app = new Excel.Application();
    app.Visible = true;
    workbook = app.Workbooks.Add(1);
    worksheet = (Excel.Worksheet)workbook.Sheets[FIRSTSHEET];
    addData(FIRSTROW,FIRTSCOLUMN,"yourdata");


 public void addData(int row, int col, string data)
    {
        worksheet.Cells[row, col] = data;

    }    
于 2012-08-27T19:34:58.490 に答える