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

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

2012-01-05 
郁闷啊~~~读取Excel文件的问题!!!读取客户端的一个excel文件代码如下:publicstaticDataSetGetDataSet(stri

郁闷啊~~~读取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在读这个文件前先判断下这个文件没有正在使用如果正在使用先关掉。
还有一个解决办法就是把这个文件保存为模板。

热点排行