2009-04-16 23 views
5

C# dilinde bir kullanıcı denetiminde bir excel sayfa bölümünü (tüm sayfayı değil) gömmem gerekiyor. Ve bunun üzerindeki verileri manipüle etmek ve bir koleksiyona kaydetmek istiyorum.C# kullanıcı denetiminde excel sayfasını yerleştirin

Bu konuda gitmenin en iyi yolu nedir?

+0

Verileri yalnızca bir biçim biçiminde görüntülemeniz veya Excel oluşturma motoruna ihtiyacınız var mı? Sadece excel dosyasını okuyabilir ve DataGridView'da görüntüleyebilirsiniz. Aksi halde, bazı OLE/COM öğelerini (varsayalım) –

+0

yapmanız gerekir. Excel sayfasına ihtiyacınız varsa, bir WebBrowser denetimini winform'a ekleme ve içerik türünü excel belgesi olarak yükleme seçeneği vardır. – jgallant

+0

2009'dan beri yükselen yeni seçenekler var mı? – PPC

cevap

6

Elektronik tabloyu Excel COM Kitaplığı ile açardım. Microsoft Excel Nesne Kitaplığı'na bir başvuru eklerseniz, Com arabirimine ulaşabilirsiniz.

bu kullanarak ifadeleri ekleyin:
using Microsoft.Office.Interop; 
using Microsoft.Office.Interop.Excel; 

Sonra böyle bir şey yaparak elektronik tablodan okuyabilirsiniz:

private void GetData(string fileName, string tabName) 
    { 
     Workbook theWorkbook; 

     Application ExcelObj = null; 
     ExcelObj = new Application(); 

     theWorkbook = ExcelObj.Workbooks.Open(fileName, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
      Type.Missing, Type.Missing); 


     Sheets sheets = theWorkbook.Worksheets; 
     Worksheet worksheet = (Worksheet)sheets[tabName]; 

     Range range = worksheet.get_Range("A1:A1", Type.Missing); 

     string data = range.Text as string; 

     // 
     // TODO : store the data 
     // 

     theWorkbook.Close(false, fileName, null); 
    } 

Bu kod, bir dizeye A1 hücresinin içeriğini okurdu.

Excel COM arabirimiyle çalışmanın ilginçlerinden biri, yalnızca bir hücre bile olsa bir Aralıktaki verilere erişmeniz gerektiğidir. Aralığı bir hücre grubu olarak ayarlayabilir, ardından her hücrenin içeriğini almak için döndürdüğü koleksiyonun üzerine yineleyebilirsiniz.

Ayrıca, dosya adı ve sekme adı üzerinde bir hata denetimi/işleme eklemek de istersiniz.

Excel'den okumak için ODBC'yi kullanmanın bir yolu da vardır, ancak elektronik tablonun belirli bir biçimde biçimlendirilmesi gerekir. Satır 1'de bir başlık verisi olmalı. COM arayüzünü kullanmanın daha kolay olduğunu buldum.

İhtiyacınız olan verileri edindikten sonra, yazdığınız bir DataSet'e yazabilirsiniz. Sonra bu veri kümesini, WFF'de WinForms veya bir liste kutusu kullanıyorsanız DataGridView'a bağlayabilirsiniz. Verileri XML biçiminde kaydetmek istiyorsanız, verileri bir dosyaya depolamak için DataSet WriteXml işlevini kullanabilirsiniz.

+0

Eğer bir oylamayı reddederseniz, lütfen nedenini açıklayın. – epotter

5

Neden değiştirmek istediğiniz verilerle doldurulmuş bir DataGridView kullanmıyorsunuz?

Değişiklikler tamamlandıktan sonra, DataGridView'dan verileri, çektiğiniz Excel dosyasının bir kısmı üzerinden kaydedin.

Ayrıca theselinksuseful!

0

Microsoft.Office.Interop.Excel kütüphanesine bakın. Orada excel dosyaları ve işlemleri ile çalışmak için bir sürü excel kontrolleri vardır.

İlgili konular