日期:2014-05-20  浏览次数:20696 次

请教一个问题,有关JAVA打开EXCEL文件的
我的程序需要用EXCEL打开一个文件,用Runtime.getRuntime().exec来打开,
目前我机子上的EXCEL.EXE位置为:
C:\Program   Files\Microsoft   Office\OFFICE11\EXCEL.EXE
代码为:
String   addr= "C:\\Downloads\\TEST.xls ";
Runtime.getRuntime().exec( "C:\\Program   Files\\Microsoft   Office\\OFFICE11\\EXCEL.EXE   "   +addr);
可以正常打开,问题是程序布置到客户端时,无法确认用户机子上的
EXCEL.EXE是在哪个路径下,这怎么办呢?我试过直接
Runtime.getRuntime().exec( "EXCEL.EXE   "   +addr);这样是无法打开的.
如何取得机子上EXCEL.EXE的路径呢?
望赐教,最好是写个简单的例子,谢谢.

------解决方案--------------------
我个人认为要在整个磁盘下寻Excel.exe的路径不是一个好的解决办法。
你可以加段代码在客户端让客户来选择好了。

非要这么不可的话,我有段C++代码,你可以参考一下。作些改进。


void TForm1::FindFile(AnsiString Dir) // Dir 是路径 如 "c:\\ " 或 "D:\\ "
{
TSearchRec sr;
int iAttributes = 0;
iAttributes |= faAnyFile;
if ( FindFirst( Dir+ "*.* ", iAttributes, sr) == 0 )
{
try
{ AnsiString dirStr,fileName;
do
{
if ( sr.Name == ". " || sr.Name == ".. " )
continue;
if ( sr.Attr == faDirectory )
{
FindFile (Dir+sr.Name+ "\\ ");//找到一个目录
}
else
{
Application-> ProcessMessages();
fileName=sr.Name;
dirStr=Dir;
if (fileName.Pos( "mang3160.pbd ")> 0)
{
mydir= Dir;
}
}
Application-> ProcessMessages();
}while ( FindNext (sr) == 0);
Application-> ProcessMessages();
FindClose(sr);
}
catch(Exception &e)
{
FindClose(sr);
}
}
}
------解决方案--------------------
从注册表读取:
package org.solol.test;

import com.ice.jni.registry.NoSuchKeyException;
import com.ice.jni.registry.RegStringValue;
import com.ice.jni.registry.Registry;
import com.ice.jni.registry.RegistryException;
import com.ice.jni.registry.RegistryKey;