2012-08-27 18 views
5

私は〜10列と1〜20行のExcelファイルを持っています。私はさまざまなデータ要素で1〜20行を挿入する必要があります。.Netから簡単なデータをExcelファイルに挿入する最も簡単な方法

excelファイルにいくつかのタグを入れて置き換える方法があるのだろうかと思っていました。列を「名前」としてマークするもの。

Name[0] = object.name;

むしろハードコードではありません、私はこの正確な方法が可能であるかどうかわからないんだけど、私は本当にすべての力仕事を必要としないし、私のようにセルの位置:私は言うことができるコードでその方法時間の経過とともにExcelファイルが変更される可能性があります。

また、非表示の「ID」セルを追加する必要があります。私は後でその橋を渡ることができると思う。 ADO.NETを使用

+0

何を試しましたか? MSDNには例がありますか?あなたはADO.NETとオートメーションを持っています。 ADO.NETでは、名前付き範囲をテーブルのように扱うことができます。 ADO.NETはJetプロバイダを使用します。 ADO.NETはいくつかの構造を必要としますが、それは簡単です(私の心では)Excelを必要としません。 – Paparazzi

答えて

11

は、上記のあなたが列名として列1とヘッダ...と最初の行を持っていることを前提と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(); 
} 

コードに行を追加することは容易です。 また、コードでは、Microsoft.Jet.OleDb.4.0の代わりにExcel 2007または2010のACE OleDBプロバイダを使用します。

EDIT:あなたはこの1

OleDbCommand cmd1 = new OleDbCommand("INSERT INTO [yourNamedRange] " + 
         "VALUES(@value1, @value2, @value3, @value4)", cn); 

可哀想にSQLコマンドを変更することができます名前付き範囲を参照するには、私は、個々の列を参照する方法を見つけることができません。

+0

この応答をありがとう。よりインテリジェントに値を追加する簡単な方法があるかどうか知っていますか?おそらくExcelファイルに既に存在する名前付き範囲を使用します。 – PFranchise

+0

私の問題は、編集する必要があるセクションの上にいくつかの行があることです。申し訳ありませんが、これは私の最初の投稿で伝達されませんでした。 – PFranchise

+0

NamedRangeに挿入を表示するように更新されました。 – Steve

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

    }  
関連する問題