java解析dll文件报错

目前的项目中需要将Excel内容显示在页面上,尝试了各种方法。 发下下面一种比较适合。 1.运行环境为win平台,不牵扯可移植 2.文档内容简单 3.简单显示 下面是一段代码

import java.io.File;

import org.jawin.DispatchPtr;
import org.jawin.win32.Ole32;
/**
 * 将xls文件读出后并转换成xml文件
 * @author Jeff
 * @version v1.0
 */

public class ExcelUtil {
	/**
	 * 
	 * @param src 源文件xls文件
	 * @param dest 导出文件xml文件
	 */
	public static void saveXlsAsXml(String src, String dest) {
		try {
			Ole32.CoInitialize();
			File file = new File(dest);
			if (file.exists()) {
				file.delete();
			}
			DispatchPtr app = new DispatchPtr ("Excel.Application");
			app.put("Visible", false);
			DispatchPtr books=(DispatchPtr)app.get("Workbooks");
		    DispatchPtr book = (DispatchPtr) books.invoke("Open", src);
		    /**
             * for the benefit of others, here is the complete list of canstant values for the saveas function :
             18=Excel 
             6=Comma-seperated values format
             22=Macintosh comma-separated values format
             24=MSDOS comma-seperated values format
             23=MS windows comma-separated values format
             -4158=O/S boing used comma-separated values format
             7=DBase II format
             8=DBase III format
             11=DBase IV format
             9=Data interchange format
             16=Excel 2.0 format
             27=Excel 2.0 (Far East) format
             29=Excel 3.0 format
             33=Excel 4.0 format
             35=Excel 4.0 Workbook format
             39=Excel 5.0 & Excel 97 format
             43=Excel 95 & Excel 97 format
             44=HTML
             26=Excel international add-in
             25=Excel international marco
             2=symbolic link format
             17=template file format
             19=Mcintosh test file format
             21=MSDOS test file format
             36=text printer file (.prn)
             20=MS Windows text file format
             42=Unicode
             45=Web archive format (.mht)
             5=Lotus 2.x format
             31==Lotus 2.x .all format
             30=Lotus 2.x .fmt format
             15=Lotus 3.x format
             32=Lotus3.x and Lotus 123 for Windows format
             38=Lotus 4.0 format

             4=MS Works format
             -4143=Excel workbook format
             28=MS Works (far east) format
             34=Quattro Pro for MSDOS format
             46=XML format
             */
		   
		    book.invoke("SaveAs",dest,new Integer(46));
		    book.invoke("Quit");
		} catch (Exception e) {
			
		}
	}
}

问题出来了,单元测试时报了这个异常: java.lang.UnsatisfiedLinkError: win32Invoke0 at org.jawin.marshal.GenericStub.win32Invoke0(Native Method) at org.jawin.marshal.GenericStub.win32Invoke(GenericStub.java:152) at org.jawin.FuncPtr.invoke(FuncPtr.java:186) at org.jawin.FuncPtr.invoke(FuncPtr.java:205) at org.jawin.win32.Ole32.CLSIDFromProgID(Ole32.java:115) at org.jawin.win32.Ole32.GetFromProgID(Ole32.java:95) at org.jawin.COMPtr.(COMPtr.java:126) at org.jawin.DispatchPtr.(DispatchPtr.java:72) at com.intelsrc.util.ExcelUtil.saveXlsAsXml(ExcelUtil.java:26) at com.intelsrc.test.TestExcelOperate.testExportToExcel(TestExcelOperate.java:27) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:592) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41) at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) at org.junit.runners.ParentRunner.run(ParentRunner.java:220) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
我使用的是jawin来解析xls文档。 所以按照正常步骤 1.拷贝jawin.dll到system32目录下 2.将jawin-stubs.jar和jawin.jar包导入到jre/lib/ext目录下 3.执行 大家看看 是哪里有问题?

转载于:https://my.oschina.net/dlpinghailinfeng/blog/15989

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值