私はアンドロイドが初めてです。私のアプリでは、.doc と .docx およびその他のオフィス スーツ ファイルを読み取る必要があります。彼らの存在に依存します。アプリで Intent を使わずに読みたいです。多くのコードを試しましたが、正しく動作しません。私のコードは、さまざまなモジュールを使用して以下に示すとおりです。どのような変更を行う必要がありますか、またはこのファイルを読み取る他の方法はありますか?
私のコードは次のとおりです。
/**
* Apache OPI Code.
*/
if(Environment.getExternalStorageState().equalsIgnoreCase("y")){
TextView tv = (TextView) findViewById(R.id.textview_data_rla);
WordExtractor extractor = null;
try {
File file = new File(getExternalFilesDir(null),"n.doc");
FileInputStream fis=new FileInputStream(file.getAbsolutePath());
Log.d("File", fis.toString());
HWPFDocument document=new HWPFDocument(fis);
extractor = new WordExtractor(document);
String[] fileData = extractor.getParagraphText();
for(int i=0;i<fileData.length;i++){
if(fileData[i] != null){
tv.setText(fileData[i]);
Log.d("file",fileData[i]);
}
}
}
catch(Exception exep){
}
}
/**
* Using HWPFDocument.
*/
try {
TextView tv = (TextView) findViewById(R.id.textview_data_rla);
File sdcard = Environment.getExternalStorageDirectory();
File file = new File(sdcard,"n.doc");
//InputStream fis = new FileInputStream(file);
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(file));
HWPFDocument doc = new HWPFDocument(fs);
Range range = doc.getRange();
CharacterRun run = null;
for (int i=0; i<range.numCharacterRuns(); i++) {
run = range.getCharacterRun(i);
Log.d("character run",String.valueOf(i+1));
Log.d("Text",run.text().toString());
}
tv.setText(run.text().toString());
OutputStream out = new FileOutputStream(new File("/mnt/sdcard/new.doc"));
doc.write(out);
out.flush();
out.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/**
* Apache POI using NPOIFSFileSystem.
*/
File sdcard = Environment.getExternalStorageDirectory();
File file = new File(sdcard,"n.doc");
WordExtractor extractor1 = null;
try{
NPOIFSFileSystem fs = new NPOIFSFileSystem(file);
extractor1 = new WordExtractor(fs.getRoot(), null);
} catch (Exception e){
e.printStackTrace();
}
for(String rawText : extractor1.getParagraphText()) {
String text = WordExtractor.stripFields(rawText);
Log.d("text",text);
}
/**
* Apache Tika code.
*/
TikaConfig tika = TikaConfig.getDefaultConfig();
TikaInputStream stream = TikaInputStream.get(file);
ContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
tika.getParser().parse(file, handler, metadata, new ParseContext());
String text = handler.toString();
/**
* Code using jOpenDocument.jar
*/
final OpenDocument doc = new OpenDocument();
doc.loadFrom("invoice.ods");
// Show time !
final JFrame f = new JFrame("Invoice Viewer");
ODSViewerPanel viewer = new ODSViewerPanel(doc);
f.setContentPane(viewer);
f.pack();
f.setVisible(true);
}
これは私が使用しなければならない正しい方法です。
できる限り早くご回答ください。前もって感謝します。