Excel 导人出现问题
Microsoft Office Access 数据库引擎找不到对象“C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\11.0\新建 Microsoft Excel 工作表.xlsx”。请确定该对象存在,并正确拼写其名称和路径名。
using System;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.Sql;
using System.Reflection;
using System.IO;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
/**/
/// <summary>
/// 实现excel中的数据导入sql数据库中
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnUpload_Click(object sender, EventArgs e)
{
if (File1.Value == string.Empty || File1.Value == "")
{
Response.Write("<Script>alert('选择路径');</Script>");
}
else
{
FileInfo file = new FileInfo(File1.PostedFile.FileName.ToString());
string sConnectionString;
string extension = file.Extension;
switch (extension)
{
case ".xls":
sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + file + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
break;
case ".xlsx":
sConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + file + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1;'";
break;
default:
sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + file + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
break;
}
OleDbConnection objConn = new OleDbConnection(sConnectionString);
objConn.Open();
OleDbDataAdapter objAdapter1 = new OleDbDataAdapter("select * from [Sheet1$]", objConn);
DataSet objDataset1 = new DataSet();
objAdapter1.Fill(objDataset1, "XLData");
GridView1.DataSource = objDataset1.Tables[0];
GridView1.DataBind();
objConn.Close();
}
}
}
求指导 求解决方案 谢谢 excel
[解决办法]
你是服务器的代码想导入客户端选择的文件?
这代码路径那里错了,你觉得那个路径是相对于服务器还是相对于客户端呢?
你应该把文件先上传到服务器再进行导入。
[解决办法]
同2#一样
你先file.saveas()
然后server.mappath取路径 作为Data Source
还有一点 ACE引擎直接可以访问03的xls 一个就可以了 无需判断
[解决办法]
你这个思路缺少一个步骤,不能使用Jet OLEDB Provider直接去访问客户端的EXCEL路径.
你需要将客户端的EXCEL上传到服务器(或者FileServer上),然后去访问服务器端的路径.
当然,除非客户端将他的EXCEL放置在某个文件夹,然后共享给everyone.
[解决办法]
4楼已经说过了,你先保存,然后对文件进行操作
比如你是在客户端d:\test.xls(这个是客户端的文件路径,web程序中对客户端文件操作是需要权限的),
你先将文件保存在你服务器端的某个位置如:d:\test.xls(这个是服务器端的文件路径)
然后你就可以对这个文件进行操作了。
了解?
[解决办法]
我这没问题,测试通过
[解决办法]
在那句报的错?另外别在浏览后上传前移动文件位置
[解决办法]
另外如果客户端和服务器不是同一个机器,你这样达不到从excel中导入数据的效果。你应该在文件传到服务器后,再读取数据。(前面很多人都说了)。
[解决办法]
FileInfo file = new FileInfo(File1.PostedFile.FileName.ToString());
string sConnectionString;
string extension = file.Extension;
==change to==>
string extension = "." + File1.FileName.Substring(File1.FileName.LastIndexOf(".") + 1);
string file = AppDomain.CurrentDomain.BaseDirectory + DateTime.Now.Ticks + extension;
File1.SaveAs(file);
[解决办法]
HttpPostedFile file = fuHead.PostedFile;
//fuHead前台定义的一个读取文件的控件 <asp:FileUpload ID="fuHead" runat="server" //Height="20" width="200px"></asp:FileUpload>
HttpPostedFile fi = file;
string filename = Path.GetExtension(file.FileName);
string filePath = "~/UploadFiles/" + filename;
file.SaveAs(Server.MapPath(filePath));//这时候的excel文件才能真正完成你上传的需求
OleDbConnection OleConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(filePath) + ";Extended Properties=\"Excel 8.0;IMEX=1\";");
OleDbCommand OleDbCmd = new OleDbCommand("SELECT * FROM [Sheet1$]", OleConn);
OleConn.Open();
OleDbDataReader odr = OleDbCmd.ExecuteReader();
[解决办法]
没报错,执行到objConn.Open();这也没报错