2

特定のブックマークの場所にテーブルを作成する必要があります。つまり、ブックマークを見つけてテーブルを挿入する必要があります。docx4jを使用してこれを行うにはどうすればよいですか事前に感謝します


申し訳ありませんジェイソン、私は Stackoverflow を初めて使用するので、問題を明確に書くことができませんでした。これが私の状況と問題です。

あなたが提案したように、そして私のニーズに合わせてそのコードに変更を加えました。コードはここにあります

//loop through the bookmarks
for (CTBookmark bm : rt.getStarts()) {

// do we have data for this one?
String bmname =bm.getName(); 
// find the right bookmark (in this case i have only one bookmark so check if it is    not null)
if (bmname!=null) {
String value = "some text for testing run";
//if (value==null) continue;

List<Object> theList = null;
//create bm list 
theList = ((ContentAccessor)(bm.getParent())).getContent();

// I set the range as 1 (I assume this start range is to say where the start the table creating)
int rangeStart = 1;



WordprocessingMLPackage wordPackage =   WordprocessingMLPackage.createPackage();

// create the table

Tbl table = factory.createTbl();

//add boards to the table 
addBorders(table);

for(int rows = 0; rows<1;rows++)
{// create a row
Tr row = factory.createTr();
for(int  colm = 0; colm<1;colm++)
{

// create a cell

Tc cell = factory.createTc();

// add the content to cell

cell.getContent().add(wordPackage.getMainDocumentPart()
.createParagraphOfText("cell"+colm));

// add the cell to row
row.getContent().add(cell);
} 

// add the row to table

table.getContent().add(row);

// now add a run (to test whether run is working or not)
org.docx4j.wml.R run = factory.createR();
org.docx4j.wml.Text t = factory.createText();
run.getContent().add(t);    
t.setValue(value);
//add table to list
theList.add(rangeStart, table);
//add run to list
//theList.add(rangeStart, run);
}

ブックマークのテキストを削除する必要がないので、削除しました。何が問題なのかわかりません。プログラムはコンパイル中ですが、単語 doc を開くことができません。「不明なエラー」と表示されます。そのブックマークに完全に書き込み、ドキュメントが開いているが、テーブルの場合はそうではない、いくつかの文字列「値」を書き込むことをテストします。助けてください よろしくお願いします

4

2 に答える 2

2

サンプル コードBookmarksReplaceWithText.javaを変更できます。

あなたの場合:

  • 89 行目: 親は p ではなく、body または tc になります。テストを削除できます。
  • 128行目:ランを追加する代わりに、テーブルを挿入したい

TblFactoryを使用してテーブルを作成するか、docx4j webapp を使用してサンプル docx からコードを生成できます。

于 2013-08-15T21:45:37.290 に答える