我先说我的需求,我用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版本完全一致。