使用FileUpload获取文件名后,不能对文件进行读取(注释部分运行不成功)

qq_31812171 2017-05-04 09:34:07
protected void Button1_Click(object sender, EventArgs e)
{
GridView1.DataSource = GetExcelTableByOleDB(@"C:\Users\Administrator\Desktop\导入\ma.xlsx");
GridView1.DataBind();
//if (FileUpload1.HasFile)//FileUpload1选择C:\Users\Administrator\Desktop\导入\ma.xlsx的文件
//{
// string fileName = Server.HtmlEncode(FileUpload1.FileName);
// string extension = System.IO.Path.GetExtension(fileName);
// if ((extension == ".xlsx") || (extension == ".xls"))
// {
// GridView1.DataSource = GetExcelTableByOleDB(@"C:\Users\Administrator\Desktop\导入\ma.xlsx");
// GridView1.DataBind();
// }
//}

}

private DataTable GetExcelTableByOleDB(string path)
{
try
{
DataTable dtExcel = new DataTable();
DataSet dst = new DataSet();

string strExtension = System.IO.Path.GetExtension(path);//获取文件后缀名.xlsx
string strFileName = System.IO.Path.GetFileName(path);//获取文件扩展名test.xlsx

//Excel的连接
OleDbConnection objConn = null;
switch (strExtension)
{
case ".xls":
objConn = new OleDbConnection
("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ path + ";" +
"Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1;\"");

break;
case ".xlsx":
objConn = new OleDbConnection
("Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
+ path + ";" +
"Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1;\"");
break;
default:
objConn = null;
break;
}
if (objConn == null)
{
return null;
}
objConn.Open();
//获取Excel中所有Sheet表的信息
DataTable schemaTable = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
//获取Excel的第一个Sheet表名
string tableName = schemaTable.Rows[0][2].ToString().Trim();
string strSql = "select * from [" + tableName + "]";
//获取Excel指定Sheet表中的信息
OleDbCommand objCmd = new OleDbCommand(strSql, objConn);
OleDbDataAdapter myData = new OleDbDataAdapter(strSql, objConn);
myData.Fill(dst, tableName);//填充数据
objConn.Close();
//dtExcel即为excel文件中指定表中存储的信息
dtExcel = dst.Tables[tableName];
return dtExcel;
}
catch
{

return null;
}

}
...全文
202 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Go 旅城通票 2017-05-04
  • 打赏
  • 举报
回复
引用 4 楼 qq_31812171 的回复:
除了fileupload,我不知道怎么选择获取文件路径
你还是不懂b/s是什么。。那是在你电脑测试,要是其他用户访问你的网站,别人路径如果是f:\xxx.xls,而C#代码是服务器端电脑运行的,你服务器有没有f这个盘还是一回事,所以你获取客户端全路径没什么意义,你只需要获取到浏览器提交的Excel文件2进制流,保存到你服务器后再用oledb连接你保存的这个文件来读取
qq_31812171 2017-05-04
  • 打赏
  • 举报
回复
引用 2 楼 showbo 的回复:
你是b/s系统?如果是安全问题获取不到客户端文件全路径的,解析都是服务器端来做,客户端js来做除非你用ie,否则兼容性比较差读取Excel文件数据 你需要保存到服务器后再读取,OleDbConnection不能直接操作HttpPostedFile对象
fileUpload选择了原文件,整个原文件都是HttpPostedFile对象?能取到文件名就把fileupload取消吗?
qq_31812171 2017-05-04
  • 打赏
  • 举报
回复
除了fileupload,我不知道怎么选择获取文件路径
qq_31812171 2017-05-04
  • 打赏
  • 举报
回复
我有个js可以使FileUpload直接获取路径名,这不是问题。问题是目标文件被fileupload操作后,不能重新进行excel读取(如被注释的代码)。如果只进行excel读取是可以成功的。
Go 旅城通票 2017-05-04
  • 打赏
  • 举报
回复
你是b/s系统?如果是安全问题获取不到客户端文件全路径的,解析都是服务器端来做,客户端js来做除非你用ie,否则兼容性比较差读取Excel文件数据 你需要保存到服务器后再读取,OleDbConnection不能直接操作HttpPostedFile对象
qq_31812171 2017-05-04
  • 打赏
  • 举报
回复
第一次发帖,自己顶一下。网上有说把excel传到服务器再进行读取,这样不会加重服务器的负担么?我只想要个路径而已
qq_31812171 2017-05-04
  • 打赏
  • 举报
回复
结贴结错楼层了,应该没关系吧,都是同一个人

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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