用c#.net逐行读取excel数据

有谁知道如何逐行读取Excel#.net的excel数据。

我发现这个代码将从excel返回数据并显示在c#.net的grindview上。 每一个,我只是徘徊,这可以在服务器端逐行读取数据吗?

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

您可以使用OleDbDataReader ,如下所示

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

由于Excel适用于范围,因此您应该首先获得想要读取的单元格范围。 之后,您现在可以使用for循环浏览它们。 您可以在下面看到一个示例:

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

有关此代码块的更详细说明,请参见此处 。

你必须试试这个

  string connectionString = ""; string strFileType = "Type"; string path = @"C:\Users\UserName\Downloads\"; string filename = "filename.xls"; if (fielname.Contains(.xls)) { connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + filename + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\""; } else if (fielname.Contains(.xlsx) { connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + filename + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\""; } string query = "SELECT * FROM [SheetName$]"; using (OleDbConnection connection = new OleDbConnection(connectionString)) { OleDbCommand command = new OleDbCommand(query, connection); connection.Open(); OleDbDataReader reader = command.ExecuteReader(); var lines = new List(); while (reader.Read()) { var fieldCount = reader.FieldCount; var fieldIncrementor = 1; var fields = new List(); while (fieldCount >= fieldIncrementor) { fields.Add(reader[fieldIncrementor - 1].ToString()); fieldIncrementor++; } lines.Add(string.Join("\t", fields)); } reader.Close(); }