Spire.Office for Java

ニュース&リリース

2026-07-31

Spire.Office for Java 11.7.0 がリリースされました

Spire.Office for Java 11.7.0 のリリースをお知らせいたします。本バージョンでは、Spire.Doc for Java において isSVG プロパティによる SVG 画像の検出をサポートしました。また、Spire.XLS for Java では指定したセル範囲を HTML に変換する機能を追加し、Spire.Presentation for Java では PowerPoint を純粋な HTML 形式に変換する機能に対応しました。さらに、Spire.PDF for Java では安定性を向上させ、複数の問題を修正しています。そのほか、本バージョンでは多数の既知の問題が正常に修正されています。詳細については以下をご覧ください。

Spire.Office for Java 11.7.0 を入手する場合は、以下のリンクをクリックしてください:

変更内容一覧

Spire.Doc for Java

カテゴリー ID 説明
新機能 SPIREDOC-8865 SPIREDOC-11824 SPIREDOC-10144 CompareOptionsクラスにsetIgnoreFieldsおよびsetIgnoreCaseChanges設定オプションを追加しました。 また、setIgnoreTable(boolean value)をsetIgnoreTables(boolean value)に名称変更し、対応するgetterのgetIgnoreTable()をgetIgnoreTables()に名称変更しました。
Document doc1 = ConvertUtil.GetNewEngineDocument();
doc1.loadFromFile(inputFile_1);
String[] name1 = new String[]{"DJG_Black_Book", "DJG_Repairs_Expense", "DJG_Sale_Amount", "DJG_Dealer_Payment", "DJG_Auction_Fees"};
String[] value1 = new String[]{"20,000.00", "2,000.00", "13,500.00", "1,000.00", "500.00"};
doc1.getMailMerge().execute(name1, value1);
doc1.isUpdateFields(true);

Document doc2 = ConvertUtil.GetNewEngineDocument();
doc2.loadFromFile(inputFile_2);
String[] name2 = new String[]{"DJG_Black_Book", "DJG_Repairs_Expense", "DJG_Sale_Amount", "DJG_Dealer_Payment", "DJG_Auction_Fees"};
String[] value2 = new String[]{"50,000.00", "5,000.00", "3,500.00", "1,000.00", "200.00"};
doc2.getMailMerge().execute(name2, value2);
doc2.isUpdateFields(true);

CompareOptions options = new CompareOptions();
options.setCompareMoves(true);
options.setIgnoreCaseChanges(true);
options.setIgnoreComments(true);
options.setIgnoreFields(true);
options.setIgnoreFootnotes(true);
options.setIgnoreTables(true);
options.setIgnoreTextboxes(true);
doc1.compare(doc2, "user", new Date(), options);
doc1.saveToFile(outputFile, FileFormat.Docx_2013);
doc1.close();
doc2.close();
新機能 SPIREDOC-11975 "Two Lines in One"機能のサポートを追加しました。
Document doc = ConvertUtil.GetNewEngineDocument();
Section section = doc.addSection();
section.setTextDirection(TextDirection.Right_To_Left);
Paragraph titlePara = section.addParagraph();
titlePara.appendText("===== FarEastLayout Two-Lines-in-One Full Scenario Test =====\n\n");

titlePara.appendText("\n\n1. Basic Two-Lines-in-One: ");
// Basic Two-Lines-in-One Combine=true, no brackets, no vertical layout
Paragraph p1 = section.addParagraph();
TextRange farEastLayout = p1.appendText("Basic Two-Lines-in-One: One Two Three Four");
farEastLayout.getCharacterFormat().setFontSize(12);
farEastLayout.getCharacterFormat().setFontNameFarEast("Songti");
FarEastLayout layout1 = new FarEastLayout();
layout1.setCombine(true); // Two-Lines-in-One
farEastLayout.getCharacterFormat().setFarEastLayout(layout1);

// Two-Lines-in-One + various bracket styles
Paragraph p1Title = section.addParagraph();
p1Title.appendText("\n\n2. Two-Lines-in-One + Different Brackets: ");

for (CombineBrackets bracket : CombineBrackets.values()) {
    Paragraph pTmp = section.addParagraph();
    TextRange rt = pTmp.appendText("Bracket Type " + bracket.name() + ": A B C D");
    rt.getCharacterFormat().setFontSize(12);
    rt.getCharacterFormat().setFontNameFarEast("Songti");
    FarEastLayout layoutTmp = new FarEastLayout();
    layoutTmp.setCombine(true);
    layoutTmp.setCombineBrackets(bracket);
    rt.getCharacterFormat().setFarEastLayout(layoutTmp);
}

doc.saveToFile(outputFile, FileFormat.Docx);
doc.close();
新機能 SPIREDOC-12004 画像が SVG であるかを確認するための isSVG プロパティを追加しました。
DocPicture picture=(DocPicture) object;if(picture.isSVG()){
    byte[] svgBytes = picture.getImageBytes();
    Files.write(Paths.get(outputFile),svgBytes);
}
不具合修正 SPIREDOC-11155 ドキュメント比較時にStringIndexOutOfBoundsExceptionが発生する問題を修正しました。
不具合修正 SPIREDOC-11816 変更を受け入れた後にテーブルの書式が乱れる問題を修正しました。
不具合修正 SPIREDOC-11918 SPIREDOC-11926 SPIREDOC-11960 SPIREDOC-11964 SPIREDOC-11968 WordからPDFへの変換時にコンテンツレイアウトが一貫しない問題を修正しました。
不具合修正 SPIREDOC-11919 マージされたWord文書をWPSで開いたときに表示効果が正しくない問題を修正しました。
不具合修正 SPIREDOC-11956 WordからHTMLへの変換時にテーブルレイアウトが正しくない問題を修正しました。
不具合修正 SPIREDOC-11962 Ubuntu環境でWordからPDFへの変換時に画像が正しくレンダリングされない問題を修正しました。
不具合修正 SPIREDOC-11966 WordからPDFへの変換時にフォント効果が正しくない問題を修正しました。
不具合修正 SPIREDOC-11973 高バージョンのJava環境でパッケージングエラーが発生する問題を修正しました。
不具合修正 SPIREDOC-11975 WordからPDFへの変換時に"Double-line Combination"効果の互換性を追加しました。
不具合修正 SPIREDOC-11857 Word ドキュメントの保存に時間がかかる問題を修正しました。
不具合修正 SPIREDOC-11893 Word ドキュメントの比較時に NullPointerException が発生する問題を修正しました。
不具合修正 SPIREDOC-11958 Word を PDF に変換する際、コンテンツが重なる問題を修正しました。
不具合修正 SPIREDOC-11961 Word を PDF に変換する際、画像内のテキストが文字化けする問題を修正しました。
不具合修正 SPIREDOC-11979 Word を PDF に変換する際、レイアウトが正しくない問題を修正しました。
不具合修正 SPIREDOC-11981 Word を PDF に変換する際、ArgumentOutOfRangeException が発生する問題を修正しました。
不具合修正 SPIREDOC-11983 テンプレートから別のドキュメントへスタイルが完全にコピーされない問題を修正しました。
不具合修正 SPIREDOC-11989 Word ドキュメントの読み込み時に「Document element did not appear. Line 1, position 1」例外が発生する問題を修正しました。
不具合修正 SPIREDOC-11993 ドキュメントのクローン作成時に余分な空白ページが追加される問題を修正しました。
不具合修正 SPIREDOC-11994 Word ドキュメントの比較時に「String index out of range: 76」例外が発生する問題を修正しました。
不具合修正 SPIREDOC-11996 セクションのクローン作成時に表の形式が正しくない問題を修正しました。
不具合修正 SPIREDOC-12005 Word を PDF に変換する際、レンダリング結果が正しくない問題を修正しました。

Spire.XLS for Java

カテゴリー ID 説明
新機能 SPIREXLS-5934 Excel から HTML への変換時に固定された行と列を保持するかどうかを制御する新しいプロパティを追加しました(デフォルト値は false)。
Workbook wb = new Workbook();
wb.loadFromFile(inputFile);
HTMLOptions.Default.isSaveFreezedPanes(true);
wb.saveToFile(outputFile, FileFormat.HTML);
wb.dispose();
新機能 SPIREXLS-5938 Excel から Markdown への変換時に画像を相対パスで保存するかどうかを制御する isSavePicInRelativePath プロパティを追加しました。
Workbook wb = new Workbook();
        wb.loadFromFile(inputFile);
        MarkdownOptions markdownOptions = new MarkdownOptions();
        markdownOptions.isSavePicInRelativePath(true);
        wb.saveToMarkdown(outputFile, markdownOptions);
        wb.dispose();
新機能 SPIREXLS-5948 BYROW および BYCOL 関数のサポートを追加しました。
sheet.getRange().get("G7").setFormula("=BYROW(B7:F7, LAMBDA(row, AVERAGE(row)))");
sheet.getRange().get("B8").setFormula("=BYCOL(B2:B7, LAMBDA(col, AVERAGE(col)))");
新機能 SPIREXLS-5975 Excel から Markdown への変換時にハイパーリンクを Markdown 参照スタイルとして保存するかどうかを制御する isSaveHyperlinkAsRef プロパティを追加しました。
Workbook wb = new Workbook();
wb.loadFromFile(inputFile);
MarkdownOptions markdownOptions = new MarkdownOptions();
markdownOptions.isSaveHyperlinkAsRef(true);
wb.saveToMarkdown(outputFile, markdownOptions);
wb.dispose();
新機能 SPIREXLS-5980 指定したセル範囲の HTML への変換をサポートします。
StringBuilder sb = new StringBuilder();
Workbook workbook = new Workbook();
workbook.loadFromFile(inputFile);

Worksheet sheet = workbook.getWorksheets().get(0);
CellRange cell = sheet.getRange().get("A1:B3");
sb.append(cell.getHtmlString());
新機能 SPIREXLS-5982 XMATCH 関数のサポートを追加しました。
sheet.getRange().get("C4").setFormula("=XMATCH(\"Lucy\", A2:A5)");
新機能 SPIREXLS-5983 行と列の入れ替え(転置)のサポートを追加しました。
Workbook workbook = new Workbook();
workbook.loadFromFile(inputFile);
Worksheet sheet = workbook.getWorksheets().get(0);

EnumSet options = EnumSet.of(CopyRangeOptions.Transpose, CopyRangeOptions.All);
sheet.getRange().get("D1").setText("Transpose A1:C4 to D2:G3:");
sheet.getRange().get("A1:C4").copy(sheet.getRange().get("D2:G3"), options);
sheet.getRange().get("D4").setText("Transpose A1:B5 to D5:");
sheet.getRange().get("A1:B5").copy(sheet.getRange().get("D5"), options);

options = EnumSet.of(CopyRangeOptions.Transpose, CopyRangeOptions.CopyStyles);
sheet.getRange().get("D9").setText("Transpose A10 to D10:");
sheet.getRange().get("A10").copy(sheet.getRange().get("D10"), options);
sheet.getRange().get("D11").setText("Transpose A11:B11 to D12:");
sheet.getRange().get("A11:B11").copy(sheet.getRange().get("D12"), options);

options = EnumSet.of(CopyRangeOptions.Transpose, CopyRangeOptions.CopyConditionalFormats);
sheet.getRange().get("D16").setText("Transpose B17:B20 to D17:");
sheet.getRange().get("B17:B20").copy(sheet.getRange().get("D17"), options);

options = EnumSet.of(CopyRangeOptions.Transpose, CopyRangeOptions.CopyStyles);
sheet.getRange().get("D19").setText("Transpose B17:B20 to D20:");
sheet.getRange().get("B17:B20").copy(sheet.getRange().get("D20"), options);

options = EnumSet.of(CopyRangeOptions.Transpose);
sheet.getRange().get("D22").setText("Transpose B17:B20 to D23:");
sheet.getRange().get("B17:B20").copy(sheet.getRange().get("D23"), options);

workbook.saveToFile(outputFile);

sheet.dispose();
workbook.dispose();
新機能 SPIREXLS-5990 セルへのチェックボックスコントロールの埋め込みおよびその選択状態の設定のサポートを追加しました。
Workbook workbook = new Workbook();
Worksheet sheet = workbook.getWorksheets().get(0);

XlsRange range = (XlsRange)sheet.getRange().get("A1");
range.insertEmbedCheckBox();
range.setEmbedCheckBoxCheckState(true);

workbook.saveToFile(outputFile);
workbook.dispose();
新機能 SPIREXLS-6020 作成、編集、削除、要約の生成、統合を含むデータテーブル(What-If 分析)機能のサポートを追加しました。
Workbook wb = new Workbook();
wb.loadFromFile(inputFile);
Worksheet worksheet = wb.getWorksheets().get(0);
// Access the collection of scenarios in the worksheet
XlsScenarioCollection scenarios = worksheet.getScenarios();
//Initialize list objects with different values for scenarios
List currentChangePercentage_Values = new ArrayList() {{ add(0.23); add(0.8); add(1.1); add(0.5); add(0.35); add(0.2); }};
List increasedChangePercentage_Values = new ArrayList() {{ add(0.45); add(0.56); add(0.9); add(0.5); add(0.58); add(0.43); }};
List decreasedChangePercentage_Values = new ArrayList() {{ add(0.3); add(0.2); add(0.5); add(0.3); add(0.5); add(0.23); }};
List currentQuantity_Values = new ArrayList() {{ add(1500); add(3000); add(5000); add(4000); add(500); add(4000); }};
List increasedQuantity_Values = new ArrayList() {{ add(1000); add(5000); add(4500); add(3900); add(10000); add(8900); }};
List decreasedQuantity_Values = new ArrayList() {{ add(1000); add(2000); add(3000); add(3000); add(300); add(4000); }};
//Add scenarios in the worksheet with different values for the same cells
scenarios.add("Current % of Change", worksheet.getRange().get("F5:F10"), currentChangePercentage_Values);
scenarios.add("Increased % of Change", worksheet.getRange().get("F5:F10"), increasedChangePercentage_Values);
scenarios.add("Decreased % of Change", worksheet.getRange().get("F5:F10"), decreasedChangePercentage_Values);
scenarios.add("Current Quantity", worksheet.getRange().get("D5:D10"), currentQuantity_Values);
scenarios.add("Increased Quantity", worksheet.getRange().get("D5:D10"), increasedQuantity_Values);
scenarios.add("Decreased Quantity", worksheet.getRange().get("D5:D10"), decreasedQuantity_Values);
//Saving the workbook
wb.saveToFile(outputFile, ExcelVersion.Version2013);
wb.dispose();
Workbook wb = new Workbook();
wb.loadFromFile(inputFile);
Worksheet worksheet = wb.getWorksheets().get(0);
// Access the collection of scenarios in the worksheet
XlsScenarioCollection scenarios = worksheet.getScenarios();
XlsScenario scenario1 = scenarios.get(0);
XlsScenario scenario2 = scenarios.get(1);
//Modify the scenario
scenario1.setVariableCells(worksheet.getRange().get("A1:A5"), scenario2.getValues());
CellRange sourceCell = worksheet.getRange().get("B1:B5");
scenario2.setVariableCells(sourceCell, scenario2.getValues());
scenario1.show();
scenario2.show();
//Saving the workbook
wb.saveToFile(outputFile, ExcelVersion.Version2013);
wb.dispose();
Workbook wb = new Workbook();
wb.loadFromFile(inputFile);
Worksheet worksheet = wb.getWorksheets().get(0);
// Access the collection of scenarios in the worksheet
XlsScenarioCollection scenarios = worksheet.getScenarios();
//delete the scenario
scenarios.removeScenarioAt(0);// Delete by index
scenarios.removeScenarioByName("two");// Delete by name
String content = "";
content += "Count:" + scenarios.getCount() + "\n";
content += "ContainsScenario:" + scenarios.containsScenario("two") + "\n";
content += "ContainsScenario:" + scenarios.containsScenario("one") + "\n";
TestUtil.writeAllText(outputFile, content);
//Saving the workbook
wb.dispose();
Workbook wb = new Workbook();
wb.loadFromFile(inputFile);
Worksheet worksheet = wb.getWorksheets().get(0);
// Access the collection of scenarios in the worksheet
XlsScenarioCollection scenarios = worksheet.getScenarios();
//Initialize list objects with different values for scenarios
List currentChangePercentage_Values = new ArrayList() {{ add(0.23); add(0.8); add(1.1); add(0.5); add(0.35); add(0.2); }};
List increasedChangePercentage_Values = new ArrayList() {{ add(0.45); add(0.56); add(0.9); add(0.5); add(0.58); add(0.43); }};
List decreasedChangePercentage_Values = new ArrayList() {{ add(0.3); add(0.2); add(0.5); add(0.3); add(0.5); add(0.23); }};
List currentQuantity_Values = new ArrayList() {{ add(1500); add(3000); add(5000); add(4000); add(500); add(4000); }};
List increasedQuantity_Values = new ArrayList() {{ add(1000); add(5000); add(4500); add(3900); add(10000); add(8900); }};
List decreasedQuantity_Values = new ArrayList() {{ add(1000); add(2000); add(3000); add(3000); add(300); add(4000); }};
//Add scenarios in the worksheet with different values for the same cells
scenarios.add("Current % of Change", worksheet.getRange().get("F5:F10"), currentChangePercentage_Values);
scenarios.add("Increased % of Change", worksheet.getRange().get("F5:F10"), increasedChangePercentage_Values);
scenarios.add("Decreased % of Change", worksheet.getRange().get("F5:F10"), decreasedChangePercentage_Values);
scenarios.add("Current Quantity", worksheet.getRange().get("D5:D10"), currentQuantity_Values);
scenarios.add("Increased Quantity", worksheet.getRange().get("D5:D10"), increasedQuantity_Values);
scenarios.add("Decreased Quantity", worksheet.getRange().get("D5:D10"), decreasedQuantity_Values);
//Create Summary
worksheet.getScenarios().summary(worksheet.getRange().get("L7"));
//Saving the workbook
wb.saveToFile(outputFile, ExcelVersion.Version2013);
wb.dispose();
Workbook wb = new Workbook();
wb.loadFromFile(inputFile);
Worksheet worksheet1 = wb.getWorksheets().get(0);
Worksheet worksheet2 = wb.getWorksheets().get(1);// This sheet contains Scenarios
//Merge the scenario
worksheet1.getScenarios().merge(worksheet2);
//Saving the workbook
wb.saveToFile(outputFile, ExcelVersion.Version2013);
wb.dispose();
新機能 SPIREXLS-6162 Excel から JSON データへの変換のサポートを追加しました。
Workbook workbook = new Workbook();
        workbook.loadFromFile(inputFile);
        workbook.saveToFile(outputFile, FileFormat.Json);
        workbook.dispose();
不具合修正 SPIREXLS-6160 Excel ドキュメントを読み込む際に "Invalid cell name" 例外が発生する不具合を修正しました。
不具合修正 SPIREXLS-6163 セル範囲をコピーする際にグラフの軸に余分な縦線が表示される不具合を修正しました。
不具合修正 SPIREXLS-6166 Excel ドキュメントの印刷範囲の取得に失敗する不具合を修正しました。
不具合修正 SPIREXLS-5940 スライサーを含むワークシートをコピーする際に "System.ArgumentOutOfRangeException" 例外が発生する不具合を修正しました。

Spire.Presentation for Java

カテゴリー ID 説明
新機能 PowerPoint から純 HTML 形式への変換をサポートしました(注:非対応の一部要素は SVG として描画されます)。
Presentation ppt = new Presentation();
ppt.loadFromFile(inputFile);
ppt.getSaveToHtmlOption().setPureHtml(true);
ppt.saveToFile(outputFile, FileFormat.HTML);
ppt.dispose();
不具合修正 SPIREPPT-2939 PowerPoint を PDF に変換する際に、画像が白くなる不具合を修正しました。
不具合修正 SPIREPPT-3157 PowerPoint を PDF に変換する際に、テキストの改行が正しくない不具合を修正しました。

Spire.PDF for Java

カテゴリー ID 説明
不具合修正 SPIREPDF-5182 デジタル署名追加後に署名検証が失敗する問題を修正しました。
不具合修正 SPIREPDF-7065 署名エラー “Undefined length encoding” が発生する問題を修正しました。
不具合修正 SPIREPDF-7547 ドキュメント内容置換時のメモリ使用量を最適化しました。
不具合修正 SPIREPDF-8095 Java 21 環境でプロジェクトパッケージングが失敗する問題を修正しました。
不具合修正 SPIREPDF-8096 PDF 圧縮時に “NullPointerException” が発生する問題を修正しました。
不具合修正 SPIREPDF-8099 PDF を画像に変換する際に “ArrayIndexOutOfBoundsException” が発生する問題を修正しました。