ASP.NET C# 选择Excel文件并读取到Gridview中,但是出错!

于之 2015-05-01 10:01:15
ASP.NET C# 选择Excel文件并读取到Gridview中,但是出错!

代码如下:

protected void Button1_Click(object sender, EventArgs e)
{

if (FileUpload1.HasFile == false)
{
Response.Write("<script>alert('请您选择Excel文件')</script> ");
return;
}


string IsXls = System.IO.Path.GetExtension(FileUpload1.FileName).ToString().ToLower();
if (IsXls != ".xls" && IsXls != ".xlsx")
{
Response.Write("<script>alert('只可以选择Excel文件')</script>");
return;
}
string filename = FileUpload1.FileName;
string savePath = Server.MapPath(filename); //Server.MapPath 获得虚拟服务器相对路径
//FileUpload1.SaveAs(savePath); //SaveAs 将上传的文件内容保存在服务器上
DataSet ds = ExcelSqlConnection(savePath, filename); //调用自定义方法

this.GridView1.DataSource = ds;
this.GridView1.DataBind(); '-IListSource 不包含任何数据源。

}

public static System.Data.DataSet ExcelSqlConnection(string filepath, string tableName)
{
DataSet ds = new DataSet();
try
{
string strCon = string.Format("Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source ={0};Extended Properties=Excel 8.0", tableName);
OleDbConnection myConn = new OleDbConnection(strCon);
string strCom = " SELECT * FROM [Sheet1$] ";
myConn.Open();
//打开数据链接,得到一个数据集
OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);

myCommand.Fill(ds, "[Sheet1$]");
myConn.Close();
}
catch (Exception ee)
{

}

return ds;
}

运行时却光标停留在:this.GridView1.DataBind(); 提示:IListSource 不包含任何数据源。
...全文
204 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
只为思考 2015-05-04
  • 打赏
  • 举报
回复
是不是office驱动问题?还有就是你得先把文件上传到服务器,然后获取绝对路径,调用office驱动读取数据填充到DataTable中,然后绑定Gridview上去
huiyaosoft 2015-05-03
  • 打赏
  • 举报
回复
给楼主一个Excel导入导出的实例,http://www.huiyaosoft.com/html/excelimportandexport.htm,将导入的数据datatable与datagridview绑定即可
likevs 2015-05-02
  • 打赏
  • 举报
回复
你这样直接绑定DataSet ds,则ASP.NET会默认转换为这样的绑定this.GridView1.DataSource = ds.Tables[0]; // 这是微软的语法糖,你别被迷惑了,建议楼主多看点书,特别理解各控件的工作机制。 假如,你返回的ds == null,则 ds.Tables[0]会报错,因为一个null对象,是不能使用.(点号操作符)的 当然,这也只是我个人分析,具体楼主自己检查
tongxuejie 2015-05-01
  • 打赏
  • 举报
回复
LZ在自导自演呀
于之 2015-05-01
  • 打赏
  • 举报
回复
public void ReadExcel(string sExcelFile, GridView dgBom) { DataTable ExcelTable; DataSet ds = new DataSet(); //Excel的连接 OleDbConnection objConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.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]; } OK了

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧