用.net写了个excel导入数据库,在本地上传excel能成功,但是把程式发布到服务器上之後,上传时报错,求高手指点
用.net写了个excel导入数据库,在本地上传excel能成功,但是把程式发布到服务器上之後,上传时报错,说System.Data.OleDb.OleDbExcepti...
用.net写了个excel导入数据库,在本地上传excel能成功,但是把程式发布到服务器上之後,上传时报错,说System.Data.OleDb.OleDbException: Microsoft Jet 资料库引擎无法找到 'D:\复制 -11.xls' 物件。请确定这个物件存在,而且您没有将物件的名称及路径拼错。它这个路径估计是读取了服务器上的路径,怎麼使它读取本地路径,请高手指点,不胜感激,最好能把代码发出来,谢谢
展开
展开全部
拉一个FileUpload1控件作上传,然后在服务段读取excel文件,注意excel存放目录要开发权限给network serivice
protected void btnUpload_Click(object sender, EventArgs e)
{
bool flag = false;
StringBuilder sb = new StringBuilder();
if (this.FileUpload1.FileName == "")
{
sb.Append("请选择excel文件!!" + "\r\n");
}
else
{
string filefullpath = this.FileUpload1.PostedFile.FileName;
string filename = filefullpath.Substring(filefullpath.LastIndexOf("\\") + 1);
string type = filename.Substring(filename.LastIndexOf(".") + 1).ToLower();
if (type == "xls")
{
string sJudgeIfExit = Server.MapPath("..\\Upload\\") + filename;
if (System.IO.Directory.Exists(sJudgeIfExit))
{
sb.Append("文件名重复!!" + "\r\n");
}
else
{
this.FileUpload1.PostedFile.SaveAs(sJudgeIfExit);
Session["OTCTable"] = CreateDataSource(sJudgeIfExit).Tables[0];
sb.Append("加载ExcelOK!" + "\r\n");
flag = true;
}
}
else
{
sb.Append("请选择excel文件操作!" + "\r\n");
}
}
}
private DataSet CreateDataSource(string filepath)
{
DataSet myds = new DataSet();
string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + "; Extended Properties=Excel 8.0;";
OleDbConnection olecon = new OleDbConnection(strCon);
OleDbDataAdapter myda = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", strCon);
myda.Fill(myds, "excel");
return myds;
}
protected void btnUpload_Click(object sender, EventArgs e)
{
bool flag = false;
StringBuilder sb = new StringBuilder();
if (this.FileUpload1.FileName == "")
{
sb.Append("请选择excel文件!!" + "\r\n");
}
else
{
string filefullpath = this.FileUpload1.PostedFile.FileName;
string filename = filefullpath.Substring(filefullpath.LastIndexOf("\\") + 1);
string type = filename.Substring(filename.LastIndexOf(".") + 1).ToLower();
if (type == "xls")
{
string sJudgeIfExit = Server.MapPath("..\\Upload\\") + filename;
if (System.IO.Directory.Exists(sJudgeIfExit))
{
sb.Append("文件名重复!!" + "\r\n");
}
else
{
this.FileUpload1.PostedFile.SaveAs(sJudgeIfExit);
Session["OTCTable"] = CreateDataSource(sJudgeIfExit).Tables[0];
sb.Append("加载ExcelOK!" + "\r\n");
flag = true;
}
}
else
{
sb.Append("请选择excel文件操作!" + "\r\n");
}
}
}
private DataSet CreateDataSource(string filepath)
{
DataSet myds = new DataSet();
string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + "; Extended Properties=Excel 8.0;";
OleDbConnection olecon = new OleDbConnection(strCon);
OleDbDataAdapter myda = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", strCon);
myda.Fill(myds, "excel");
return myds;
}
展开全部
必须是读取服务器上的路径 如果你想要读取 客户端的 那么做法应该是
1,在客户端上传时,先要取回客户端上的文档
2.压缩成二进制流 传到服务器上
3.服务器直接通过这个二进制流转换成对应的Excel 保存到服务器的对应路径上。
1,在客户端上传时,先要取回客户端上的文档
2.压缩成二进制流 传到服务器上
3.服务器直接通过这个二进制流转换成对应的Excel 保存到服务器的对应路径上。
更多追问追答
追问
你好,那我想问下,怎麼传到服务器上呀
追答
我是用c#写WInForm 的 WEb的没有用
所以我只能提供思路 具体写法 楼主可能要自己上网去看看相关的例子了
这部分的例子 应该很多。只要思路对 后面的路就好走了。·
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询