2013-04-23 19 views
8

C#. Net ile excel veri satırını nasıl okuyabileceğimi bilen var mı?excel veri satırını C# .net ile okuyabilirsiniz.

Verileri excel'den döndürecek ve C# .net öğesindeki grindview'da görüntülenecek bu kodu buldum. Her ne kadar, sadece geziyorum, bunun yerine sunucu tarafındaki veri hattını okumak mümkün olacak mı?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

using System.Data; 
using System.Data.OleDb; 
using System.IO; 


namespace site 
{ 
    public partial class pgTest : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 


     protected void btnImport_Click(object sender, EventArgs e) 
     { 
      string connString = ""; 
      string strFileType = Path.GetExtension(fileuploadExcel.FileName).ToLower(); 
      string path = fileuploadExcel.PostedFile.FileName; 
      //Connection String to Excel Workbook 
      if (strFileType.Trim() == ".xls") 
      { 
       connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\""; 
      } 
      else if (strFileType.Trim() == ".xlsx") 
      { 
       connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\""; 
      } 


      string query = "SELECT [username],[age],[phone] FROM [Sheet1$]"; 
      OleDbConnection conn = new OleDbConnection(connString); 
      if (conn.State == ConnectionState.Closed) 
       conn.Open(); 
      OleDbCommand cmd = new OleDbCommand(query, conn); 
      OleDbDataAdapter da = new OleDbDataAdapter(cmd); 
      DataSet ds = new DataSet(); 
      da.Fill(ds); 
      grvExcelData.DataSource = ds.Tables[0]; 
      grvExcelData.DataBind(); 
      da.Dispose(); 
      conn.Close(); 
      conn.Dispose(); 
     } 


    } 
} 
+0

aşağıdaki gibi OleDbDataReader kullanabilirsiniz; Verileri bir "grvExcelData" (sadece Grid görünümü ile bir şey yapmak zorunda sanırım) içine bağlama. Veya daha da iyisi; Microsoft.Office.Interop.Excel API'lerini – aquaraga

+0

kullanabilirsiniz, bu kod veri kümesinde ne istediğinizi sağlar, değil mi? –

+0

Sadece excel dosyaları satır satır okumak ve tüm excel dosyasını okuma ve değerini ızgaraya yükleme değil kontrol etmek istediğini düşünüyorum. –

cevap

6

Eğer

using (OleDbConnection connection = new OleDbConnection(connectionString)) 
{ 
    OleDbCommand command = new OleDbCommand(queryString, connection); 

    connection.Open(); 
    OleDbDataReader reader = command.ExecuteReader(); 

    while (reader.Read()) 
    { 
     var val1= reader[0].ToString(); 
    } 
    reader.Close(); 
} 
Bu kod yapacak
16

Excel aralıklarla çalıştığından, önce okumak istediğiniz hücre aralığını almanız gerekir. Bundan sonra, bunları bir for döngüsü kullanarak tarayabilirsiniz. Bu kod bloğu üzerinde daha ayrıntılı bir açıklama here bulunabilir

Excel.Application xlApp = new Excel.Application(); 
    Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"C:\myexcel.xlsx"); 
    Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1]; 
    Excel.Range xlRange = xlWorksheet.UsedRange; 

    int rowCount = xlRange.Rows.Count; 
    int colCount = xlRange.Columns.Count; 

    for (int i = 1; i <= rowCount; i++) 
    { 
     for (int j = 1; j <= colCount; j++) 
     { 
      MessageBox.Show(xlRange.Cells[i, j].Value2.ToString()); 
     } 
    } 

: Aşağıda bir örnek görebilirsiniz.

+1

Lem, sağladığınız bağlantıyı günceller misiniz ... artık çalışmıyor ... Teşekkür ederiz – nick

+0

Link şu anda 404. – bunkerdive

İlgili konular