首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

Excel 导人出现有关问题

2013-02-03 
Excel 导人出现问题Microsoft Office Access 数据库引擎找不到对象“C:\Program Files (x86)\Common Files\

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(); 这句话报错

还有就是你拿我的代码测试 没问题?

没报错,执行到objConn.Open();这也没报错 

热点排行