ここで私のコードは.docファイルのデータを段落に抽出し、特定の文字列検索に役立ちます。 Eclipse実行構成。しかし、1)私はそれが出力ファイルを.docファイルに変換することを欲しかった.2)出力はセルのみを指定する必要がある。HWPFDocument(.docファイル)から段落/文字列を抽出した後、excelファイルにデータを書き込む
public static void readParagraphs(HWPFDocument docx) throws Exception{
we = new WordExtractor(docx);
String[] paragraphs = we.getParagraphText();
// To fetch for mode
for(String p: paragraphs){
if(p.startsWith("MODE"))
System.out.println(" "+p);
}
for(String type: paragraphs){
if(type.startsWith("TYPE"))
System.out.format(" "+type);
}
}
予想される出力:ここ
S.no | Doc name | Title | mode | type
=====================================================================
1 | laptop | A12345 | abcd 123456 | efghij A12345/123456
2 | laptop | A12346 | abcd 123457 | efghij A12345/123457
3 | laptop | A12347 | abcd 123458 | efghij A12345/123458
あなたがHSSFWorkbookの私のコードの一部を見ることができます。
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("firstsheet");
Row row1 = sheet.createRow((short) 0);
row1.createCell(0).setCellValue("S.NO");
row1.createCell(1).setCellValue("DOC NAME");
row1.createCell(2).setCellValue("TITLE");
row1.createCell(3).setCellValue("MODE");
row1.createCell(4).setCellValue("TYPE");
Row row2 = sheet.createRow(rowNum++);
row2.createCell(3).setCellValue(" "+mode);
row2.createCell(4).setCellValue(" "+type);
Row row3 = sheet.createRow(rowNum++);
row3.createCell(3).setCellValue(" "+mode);
row3.createCell(4).setCellValue(" "+type);
以下の表は、ヘッダーファイル1にあります。 「A12345」のみを抽出する必要があります。
=====================================
| xx | A12345 |xx |
=====================================
以下の表は、シート2または3-6のいずれかを使用できます。各文書によって異なります。
--------------------------------------------.--------------------
|MODE : Abcde 123456 efghit 234567 sddsldjf 232132 |
|----------------------------------------------------------------|
|INFO |TYPE : efghij A12345/123456 dsflsdjflsd B22323/&123456 |
| |xxxxxxxxxxxxxxxxxalphanumericxxxxxxxxxxxxxxxxxxxxxxxxxx |
-----------------------------------------------------------------
(p.startsWith( "MODEは、"))//このメソッドは印刷する場合に役立ちます "MODEを:123456 efghit ABCDE 234567 232132 sddsldjf" 場合(type.startsWith( "TYPE"))//このメソッドは "TYPE:efghij A12345/123456 dsflsdjflsd B22323/& 123456" を印刷するのに役立ちますが、いくつかのドキュメントには 'TYPE'がありませんので、次の行を見つけるか、MODEから 'JUSTIFICATION' 'TYPE'行を取得するためのパターン認識。提案を求める。
上記の表の後に利用できるテーブルの下-----------------------------------------------------------
|JUSTIFICATION |
|-----------------------------------------------------------
| | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx alphanumericxxx |
-----------------------------------------------------------
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.poifs.filesystem.*;
import org.apache.poi.sl.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.DataFormat;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.hwpf.usermodel.HeaderStories;
import java.util.ArrayList;
import java.util.List;
import java.io.*;
public class ReadDocFileFromJava {
public static int test = 0;
private static WordExtractor ex;
public static void main(String[] args) throws IOException {
List<String> fileName=new ArrayList<String>();
fileName.add("C:\\1200.doc");
fileName.add("C:\\1210.doc");
fileName.add("C:\\1211.doc");
fileName.add("C:\\1212.doc");
fileName.add("C:\\1213.doc");
// document 2
fileName.add("C:\\1214.doc");
fileName.add("C:\\1215.doc");
fileName.add("C:\\1216.doc");
fileName.add("C:\\1217.doc");
for(int i=0;i<fileName.size();i++){
readMyDocument(fileName.get(i));
}}
public static void readMyDocument(String i){
POIFSFileSystem fs = null;
try {
fs = new POIFSFileSystem(new FileInputStream(i));
HWPFDocument docx = new HWPFDocument(fs);
ex = new WordExtractor(docx);
readParagraphs(docx);
fs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void readParagraphs(HWPFDocument docx) throws Exception{
int a =0,b=0,c=0,d=0,celIte=0, celIte2=0,link=0;
ex = new WordExtractor(docx);
String[] paragraphs = ex.getParagraphText();
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("firstsheet");
Row row0 = sheet.createRow(0);
row0.createCell(0).setCellValue("S.NO");
row0.createCell(1).setCellValue("DOC NAME");
row0.createCell(2).setCellValue("TITLE");
row0.createCell(3).setCellValue("MODE");
row0.createCell(4).setCellValue("TYPE");
for(int i=1;i<=10;i++){
Row row1 = sheet.createRow(i);
for(int j=0;j<=0;j++){
Cell cell_10 =row1.createCell(j);
do{
cell_10.setCellValue(celIte);
celIte++;
}while(celIte<1);
for(int k=3;k<=3;k++){
Cell cell_12 = row1.createCell(k);
for(String p: paragraphs){
if(p.startsWith("MODE"))
cell_12.setCellValue(""+p);
} }
workbook.write(new FileOutputStream("C:\\output.xls"));
workbook.close();
}
}
}}
S.NO | DOC NAME | TITLE | MODE | TYPE
==========================================
1 XXXX
2 XXXX
3 XXXX
4 XXXX
5 XXXX
6 XXXX
7 XXXX
8 XXXX
9 XXXX
達成しようとしているものを明確にする必要があります。 1.) ''出力を出力ファイルに変換したいのですが、どこに.docファイルがあるのですか? 'それはどういう意味ですか? 2.) '出力はセルのみを指定する必要があります'どの出力とどのセルを知るのですか? – XtremeBaumer
1)コードを実行するときに、コンソール出力ではなくFileOutputStreamsを使用してExcelファイルを作成する必要があります.2)plsはこれを今無視します。私はあまり明確ではない。 – vasam
はい。私はそれをExcelで欲しい。私はApache POIでサポートされていないcsvを知っていました。 – vasam