1

Apache.POI でドキュメント プロパティを読み取る単純な Android アプリケーションを作成しましたが、null プロパティでドキュメントを読み取ろうとすると、強制的に閉じられます。

たとえば、getDocumentSummaryInformation() を使用してから getCompany().. を使用しますが、ドキュメント プロパティのフィールド Company に値がない場合、強制的に閉じられます。

この問題を処理するにはどうすればよいですか? 下手な英語で申し訳ありません。ご清聴ありがとうございました。

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import org.apache.poi.poifs.filesystem.*;
import org.apache.poi.hpsf.DocumentSummaryInformation;
import org.apache.poi.hpsf.SummaryInformation;
import org.apache.poi.hwpf.*;
import java.io.*;

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getInit();

        cata = "";
        compa = "";

        readMyDocument(fileName);

        try {

                category.setText(cata);
            company.setText(compa);

        } catch (Exception e) {

            category.setText("Unknown Category");
            company.setText("Unknown Company");

        }

}



String fileName = "/sdcard/Test.doc";
public static String cata, compa;

public static void readMyDocument(String fileName){
    POIFSFileSystem fs = null;


    try {
        fs = new POIFSFileSystem(new FileInputStream(fileName));
        HWPFDocument doc = new HWPFDocument(fs);

        /** Read the document summary**/
        readDocumentSummary(doc);

    } catch (Exception e) {
        e.printStackTrace();

    }       
}   



public static MainActivity readDocumentSummary(HWPFDocument doc) {
    DocumentSummaryInformation summaryInfo=doc.getDocumentSummaryInformation();
    SummaryInformation summaryInfo2=doc.getSummaryInformation();

    MainActivity adata = new MainActivity();

        try{
        String category = summaryInfo2.getAuthor();
        adata.cata = category;
        }catch (Exception e) {
            Log.e("MainActivity", "Error occurred!, Error = "+e.toString());

        }

        try{
            String company = summaryInfo.getCompany();
            adata.compa = company;
            }catch (Exception e) {
            Log.e("MainActivity", "Error occurred!, Error = "+e.toString());

            }

    return adata;


}

TextView category;
TextView company;

public void getInit() {

    category = (TextView) findViewById(R.id.category);
    company = (TextView) findViewById(R.id.company);

}
}

ログ:

FATAL EXCEPTION: main
java.lang.NoSuchFieldError: org.apache.poi.hwpf.HWPFDocument.filesystem
at org.apache.poi.hwpf.HWPFDocument.<init>(HWPFDocument.java:218)
at org.apache.poi.hwpf.HWPFDocument.<init>(HWPFDocument.java:158)
at com.ajs.metaxdc.MainActivity.readMyDocument(MainActivity.java:155)
at com.ajs.metaxdc.MainActivity.onCreate(MainActivity.java:87)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
at android.app.ActivityThread.access$2300(ActivityThread.java:125)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:876)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634)
at dalvik.system.NativeStart.main(Native Method)
Force finishing activity com.ajs.metaxdc/.MainActivity
4

5 に答える 5

0

hwpf 関数をそのままにして、代わりに hpsf を使用します。hwpf プロパティ フィールドで null 値の解決策を見つけるのを誰も助けることができないためです。私を助けようとしてくれたすべての人に感謝します

于 2013-09-23T07:54:32.970 に答える