读书人

郁闷啊读取Excel文件的有关问题!

发布时间: 2012-01-05 22:36:54 作者: rapoo

郁闷啊~~~读取Excel文件的问题!!!
读取客户端的一个excel文件代码如下:
public static DataSet GetDataSet(string FilePath)
{
OleDbConnection objConn=null;
DataSet data=new DataSet();
//strConn = "Provider=Microsoft.Jet.OLEDB.4.0; " + "Data Source=Server.MapPath(@ "excelFilePath ");Extended Properties=Excel 8.0; ";


string strConn= "Provider=Microsoft.Jet.OleDb.4.0;data source= " + FilePath + ";Extended Properties= 'Excel 8.0;HDR=Yes;IMEX=1 ' ";
try
{
objConn=new OleDbConnection(strConn);
objConn.Open();
string strSql= "Select * From [ "+GetExcelWorkSheet(FilePath)+ "$] ";
OleDbCommand objCmd=new OleDbCommand(strSql, objConn);
OleDbDataAdapter sqlada=new OleDbDataAdapter();
sqlada.SelectCommand=objCmd;
sqlada.Fill(data, "ExlDt ");
}
catch(Exception Exp)
{
throw Exp;
}
finally
{
objConn.Close();
objConn.Dispose();
}

return data;
}

private static string GetExcelWorkSheet(string FilePath)
{
// '返回给定路径 Excel 文件的 workSheet 名字
Excel.ApplicationClass myExcel =new Excel.ApplicationClass();
string xlName;
// '得到worksheet名字
myExcel.Workbooks.Open(FilePath,System.Reflection.Missing.Value,false,System.Reflection.Missing.Value,null,null,System.Reflection.Missing.Value,System.Reflection.Missing.Value,System.Reflection.Missing.Value,System.Reflection.Missing.Value,System.Reflection.Missing.Value,System.Reflection.Missing.Value,System.Reflection.Missing.Value,System.Reflection.Missing.Value,System.Reflection.Missing.Value);
Excel.Sheets mySh =myExcel.Sheets;
Excel.Worksheet myWs=(Excel.Worksheet)mySh.get_Item(1);
xlName = myWs.Name;
// '关闭excel处理
myExcel.Workbooks.Close();
myExcel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject (myExcel);
System.Runtime.InteropServices.Marshal.ReleaseComObject (mySh);
System.Runtime.InteropServices.Marshal.ReleaseComObject (myWs);
mySh =null;
myWs = null;
myExcel = null;
GC.Collect();
// '返回名字字符串
return xlName;
}

但是总是报在objConn.Open();出错
The Microsoft Jet database engine cannot open the file 'C:\Documents and Settings\qinpl\Desktop\SLIMDMSOto0103_001.xls '. It is already opened exclusively by another user, or you need permission to view its data.

各位高手帮忙看看吧

[解决办法]
确保你的excel文件 没有被 其它程序打开 比如excel程序本身

重新启动你的电脑 运行你的程序.
添加函数
/// <summary>
/// 强行终止指定名称的进程
/// </summary>
/// <param name= "ProcessName "> 指定进程名称 </param>
public void KillProcess(string ProcessName)
{
try
{
System.Diagnostics.Process[] process;
process=System.Diagnostics.Process.GetProcessesByName(ProcessName.Trim());
foreach(System.Diagnostics.Process dProcess in process)
{


dProcess.Kill();
}
}
catch(Exception ex)
{
throw ex;
}
}

在你函数中.

finally
{
objConn.Close();
objConn.Dispose();
KillProcess( "Excel ");//加上这个试试
}



[解决办法]
把路径换成 'C:/Documents and Settings/qinpl/Desktop/SLIMDMSOto0103_001.xls '试试
[解决办法]
读取客户端的一个excel文件代码如下:

能直接读取客户端的么?应该先把文件传到本地吧?
[解决办法]
就算在本机实现了,布署到网上行么?
[解决办法]
hao .....JF....
[解决办法]
楼主的目录,应该是相对路径,而且是在当前站点内,如果你把EXCEL文档放到站点外(像楼主是放桌面),读取的时候因为没有访问权限而出错.

如果你的文档放在站点根目录下,可这样取:Server.MapPath( "SLIMDMSOto0103_001.xls ");
[解决办法]
是不是你的Office驱动在.Net下调用有问题?
[解决办法]
不懂,帮顶
[解决办法]
看错误提示很明显该.xls文件已经正在使用中,LZ在读这个文件前先判断下这个文件没有正在使用如果正在使用先关掉。
还有一个解决办法就是把这个文件保存为模板。

读书人网 >asp.net

热点推荐