java解析dllファイルのエラー

6117 ワード

現在のプロジェクトでは、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.Usatis fielinkErrror:win 32 Invoke 0 at org.jawin.mashl.GenericStub.GenersicStub.win 32 Invoke0(Native Method)aorg.jawin.jawin.jawin.jajawin.jjjjjjttttttttttttttttttttttttttttttttttttf.jajajava.jajajava.jajajajajajajajajajajajajajajajajajajava.fftttttttPtr.java:205)at org.jawin.win 32.Ole32.LSIDFroomProggID(Ole32.java:115)aorg.jawin.win 32.Ole32.GetFroomProgID(Ole32.java:95)aorg.jawin.OMPtr.( COMPtr. java:126)atog.jawing.jawin.jawittttttttttttttttttttttttttjajajajajajawitttttttttttttttttttttttttttttttttttttttttttttttttttttttttt)at comp.intelsrc.test.TestExcel Operate.testExport ToExcel(TestExcel Operate.java:27)at sun.refrectt.NativeMethodAccess orImpl.invoke 0(Native Method)at sun.refrectt.NativeMethAccess orImpl.invoke:NativeMethAccecess Impl.java:39)asun.refrefttttttdedededededededededededededededededededededededededededededededededededededededededededededededededededededededededededededededededededededededededededededededededededededededededededededededeod.invoke(Method.java:592)at org.junnit.runners.model.Frame ew orkMethodドル1.runReflect Callアトorg.junnit.internal.runners.model.RefretiveCallable.run(RefretiveCallable.java:15)at org.jorg.jnit.runners.model.Fraameeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeem m m MethMethMedel.ininininindddddtttttttfffffffffffffttttttttttttttttvaluate(InvokeMethod.java:20)at org.junnit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)at org.junt.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)aorg.junt.runit.runners.BlockJUnit 4 Class Runnerarararararannnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn. rum.ruld. ruldldld. rurunnnnttttttttttBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBldldldldldldldldldldld4 Class Runner.java:46)at org.junnit.runners.PartRunner.run Children(PartentRunner.java:180)org.junnit.runners.PartRunner.access$000(PartRunner.java:41)aorg.jnit.jnit.runners.PantRunner$1.evaluate(PantRunner.java:173)aorg.jorg.junt.jnit.int.internal.internal.internal.jternal.Beternal.Beternal.BentntntntmmmmmmmmmmmmmmjumumumumumumumumumumumumininininininininininininininininininininininininininininininininininRunAfters.evaluate(RunAfters.java:31)at org.junnit.runners.PartRunner.run(PartRunner.java:220)at org.eclipse.jdt.internal.jnit 4.runner.JUnit 4 TestReference. run(JUnit 4 TestReference.java:46)aorg.eclipspe.jdt.internal.jternal.jjutnit.jutnit.jnet.jnet.jnet.jnet.jtititititititititinit.jnet.jnet.jnet.jnet.jnet.jnet.jnet.jnet.jnet.jnet.jnet.jnet.jnet.jnet.jnet.jnet.jjnet.jjnet.jnet.jnet.jnet.jjjTestRunner.run Tests(RemoteTestRunner.java:467)org.eclipspe.jdt.internal.jnit.runner.RemoteteTestRunner.runTestststs(RemoteTestRunner.java:683)aorg.eclipse.jdt.internal.jjjnit.runner.RemotetetetetetetetetetetetetetetetetestRner.runer.runer.runer.rurun.rurururun.rurun.run.Reststststststststininininininininininin. run.rurun(Reststststststrururururun.Remomomomomoner.RestststststRemoteTestRunner.java:197)私はjawinを使ってxls文書を解析します。だから通常の手順で1.jawin.dllをsystem 32のディレクトリにコピーします。jawin-stubs.jarとjawin.jarカバンをjre/lib/extディレクトリに導入します。実行してください。どこに問題がありますか?