日期:2014-05-17  浏览次数:20458 次

客户端浏览Excel文件,直接读取Excel到Datat了失败,求解...
我先说我的需求,我用Input浏览客户端Excel文件,读取文件内容到Datatable,但是文件时不上传到服务器的。
我的程序发布到我电脑本地后,用同事电脑连接我的电脑测试,是可以读取到Excel的,但是程序发布到服务器上之后,在客户端浏览Excel就不能读取到Datat了,我觉得还是Excel路径的问题,但我知道该怎么解决,求帮助,下面是我的代码,谢谢各位了!!
  public DataTable ExcelToDataTable(string ExcelFileName, string ExcelSheet)
    {
        try
        {
            string strExcelConn = "Provider = Microsoft.jet.oledb.4.0;Data Source = '" + ExcelFileName + "';Extended Properties = 'Excel 8.0;HDR=YES;IMEX=1;'";
            if (ExcelFileName.Substring(ExcelFileName.LastIndexOf('.'), ExcelFileName.Length - ExcelFileName.LastIndexOf('.')) == ".xlsx")
                strExcelConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ExcelFileName + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1;'";

            string selconn = string.Format("select * from [{0}$]", ExcelSheet);
            OleDbConnection cnnxls = new OleDbConnection(strExcelConn);
            OleDbDataAdapter daxls = new OleDbDataAdapter(selconn, strExcelConn);
            DataTable xlsdt = new DataTable();
            daxls.Fill(xlsdt);
            cnnxls.Close();
            cnnxls.Dispose();

            return xlsdt;

        }
        catch (Exception)
        {
            return null;
            //throw;
        }
    }
excel asp.net 读取 datatable

------解决方案--------------------
Provider=Microsoft.ACE.OLEDB.12.0;
你这里用了ace驱动,你那个能访问的同事应该有这个驱动(或者他的office版本是2007)
其他人office是2003的就不行了。除非他们电脑上安装相应的ace驱动。

------解决方案--------------------
应该是把excel上传到服务器上,用服务器的excel驱动来读取。这样能保证客户端不用安装也能使用。
如果非要用客户端读取,就必须保证客户端的excel版本和你开发使用的excel版本完全一致。