2012-08-27 11 views
5

~ 10 sütun ve 1-20 satır içeren bir excel dosyası var. Çeşitli veri elemanları ile 1-20 satır eklemem gerekiyor.Basit verileri bir Excel dosyasına eklemek için en kolay yolu. Net

Eğer excel dosyasında bazı etiketler koyup kullanabilmem için bir yol olup olmadığını merak ediyordum. Bir sütunu "Ad" olarak işaretleyen bir şey.

Name[0] = object.name;

bu kesin yöntem mümkün olup olmadığından emin değilim, ama gerçekten ağır kaldırma ihtiyacı var ve ben oldukça zor değil kod hücre yerleri olarak yoktur: kodunda Böylece sadece söyleyebiliriz excel dosyası zamanla değişebilir.

Ayrıca, gizli bir 'Kimlik' hücresini sıraya eklemeliyim. Daha sonra bu köprüyü geçebileceğimi hayal ediyorum. ADO.NET kullanarak

+0

Ne denediniz? MSDN'de örnekleri var mı? ADO.NET ve otomasyonunuz var. ADO.NET ile adlandırılmış bir aralık bir tablo gibi ele alınabilir. ADO.NET, Jet sağlayıcısını kullanır. ADO.NET biraz yapı gerektirir, ancak daha kolay (aklımda) ve Excel gerektirmez. – Paparazzi

cevap

11

Yukarıdaki sütun adları olarak Sütun1'de ile başlığındaki ... ile ilk satırı olduğunu varsayar bir Excel Tablosu

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

kod için bir satır eklemek kolaydır. Ayrıca, kod, Microsoft.Jet.OleDb.4.0 yerine Excel 2007 veya 2010 için ACE OleDB sağlayıcısı kullanın.

DÜZENLEME: Eğer bu bir

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

Alas için sql komutunu değiştirebilecek bir Named Range başvurmak için, ben bireysel sütunlara başvurmak için bir yol bulmak mümkün değil.

+0

Bu yanıt için teşekkürler. Daha akıllıca değerler eklemenin kolay bir yolu var mı? Belki de excel dosyasında mevcut olan adlandırılmış aralıkları kullanarak. – PFranchise

+0

Sorunum, düzenlemem gereken bölümün üzerinde birkaç satır var. Üzgünüm, bu ilk gönderiimde aktarılmadı. – PFranchise

+0

Yanıt, bir NamedRange'ye ek göstermek için güncelleştirildi. – 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; 

    }  
İlgili konular