C#如何读取excel数据

如题所述

C#读取Excel数据的方法多种多样,这里提供一种基于OleDb的方式。首先,通过FileUpload控件获取上传的Excel文件路径,然后调用ReadExcel方法进行数据读取。下面的代码片段展示了具体的实现步骤:

代码示例如下:

protected void Button1_Click(object sender, EventArgs e) {
string filePath = FileUpload1.PostedFile.FileName;
ReadExcel(filePath, gdBom);
}

public void ReadExcel(string sExcelFile, GridView dgBom) {
DataTable ExcelTable;
DataSet ds = new DataSet();
// Excel的连接
OleDbConnection objConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=" + sExcelFile + ";ExtendedProperties=Excel8.0;");
objConn.Open();
DataTable schemaTable = objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
string tableName = schemaTable.Rows[0][2].ToString().Trim();
// 获取Excel的表名,默认值是sheet1
string strSql = "select * from [" + tableName + "]";
OleDbCommand objCmd = new OleDbCommand(strSql, objConn);
OleDbDataAdapter myData = new OleDbDataAdapter(strSql, objConn);
myData.Fill(ds, tableName);
// 填充数据
dgBom.DataSource = ds;
dgBom.DataBind();
objConn.Close();
ExcelTable = ds.Tables[tableName];
int iColums = ExcelTable.Columns.Count; // 列数
int iRows = ExcelTable.Rows.Count; // 行数
// 定义二维数组存储Excel表中读取的数据
string[,] storedata = new string[iRows, iColums];
for (int i = 0; i < ExcelTable.Rows.Count; i++) {
for (int j = 0; j < ExcelTable.Columns.Count; j++) {
// 将Excel表中的数据存储到数组
storedata[i, j] = ExcelTable.Rows[i][j].ToString();
}
}
int excelBom = 0; // 记录表中有用信息的行数,有用信息是指除去表的标题和表的栏目,本例中表的有用信息是从第三行开始
// 确定有用的行数
for (int k = 2; k < ExcelTable.Rows.Count; k++) {
if (storedata[k, 1] != "") {
excelBom++;
}
}
if (excelBom == 0) {
Response.Write("");
} else {
// LoadDataToDataBase(storedata,excelBom)
// 该函数主要负责将storedata中有用的数据写入到数据库中,在此不是问题的关键省略
}
}

此代码通过OleDb连接到Excel文件,读取指定的工作表数据,并将其填充到数据集和数据网格视图中。通过检查数据表中的有用信息,可以进一步处理或存储数据。
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜