C#如何读取excel数据

C#读取Excel数据文件,因为默认是常规格式,所以有些读不出来,datagrid显示出为null就是从本地电脑上读的一个excel文件大概是这样的因为第一行有些列是空的... C#读取Excel数据文件,因为默认是常规格式,所以有些读不出来,datagrid 显示出为null
就是从本地电脑上读的一个excel文件
大概是这样的因为第一行有些列是空的 然后程序默认以后所有行的这些列都为空 就算某些行的这列存在数据也读不出来了
如果把第一行为空的替换成0 问题可以解决 但要读的文件很多 所以这个方法不是很可取
展开
 我来答
janhoosan
2009-09-01 · TA获得超过2431个赞
知道小有建树答主
回答量:1233
采纳率:0%
帮助的人:899万
展开全部
代码如下:

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;Data Source=" + sExcelFile + ";" + "Extended Properties=Excel 8.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("<script language=javascript>alert('您导入的表格不合格式!')</script>");
}
else
...{
//LoadDataToDataBase(storedata,excelBom)//该函数主要负责将 storedata 中有用的数据写入到数据库中,在此不是问题的关键省略
}

}
祚胤17
2009-09-01 · TA获得超过786个赞
知道大有可为答主
回答量:1148
采纳率:82%
帮助的人:585万
展开全部
显示Excel表格
/*
using System.Data;
using System.Data.SqlClient;
*/
DataSet ds=null;
using (SqlConnection cn = new SqlConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excel文件名(绝对路径) +";Extended Properties=Excel 9.0;"))
//ConfigurationManager.ConnectionStrings["db2ConnectionString"].ConnectionString
{
cn.Open();
cmd=new SqlDataAdapter(%%1,cn);
ds=new DataSet();
cmd.Fill(ds,%%2); //"作者"
MyDataGrid.DataSource=ds.Tables(%%2).DefaultView; //"作者"
MyDataGrid.DataBind();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dede56
2009-09-01 · TA获得超过188个赞
知道答主
回答量:136
采纳率:0%
帮助的人:128万
展开全部
看来楼主可以在C#读取Excel数据文件,只是有些读不出来。
能不能上传一个简单的有些读不出来的Excel文件作为例子?
另外,你想要在datagrid 显示吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
haoluogaga
2009-09-02 · TA获得超过2378个赞
知道小有建树答主
回答量:1265
采纳率:0%
帮助的人:1006万
展开全部
你是用B/S读取 还是C/S?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式