Spire.Doc 8.6.3已发布。该版本主要修复了将Word文档转为PDF、HTML,更新目录域以及替换文档时出现的一些问题。问题修复详情如下。
问题修复:
Spire.Presentation 5.6.1已于今日发布。该版本主要修复了一些在转换PPT到PDF以及加载、操作、保存文档时出现的问题。详情见下文。
问题修复:
https://www.e-iceblue.cn/Downloads/Spire-Presentation-NET.html
本文将介绍如何使用Spire.XLS for Java提取Excel中的OLE对象。
import com.spire.xls.*;
import com.spire.xls.core.IOleObject;
import java.io.*;
public class ExtractOLEObjects {
public static void main(String[] args){
//创建Workbook实例
Workbook workbook = new Workbook();
//加载Excel文档
workbook.loadFromFile("OLEObjectsExample.xlsx");
//获取第一张工作表
Worksheet sheet = workbook.getWorksheets().get(0);
//提取工作表中的OLE对象
if (sheet.hasOleObjects()) {
for (int i = 0; i < sheet.getOleObjects().size(); i++) {
IOleObject object = sheet.getOleObjects().get(i);
OleObjectType type = sheet.getOleObjects().get(i).getObjectType();
switch (type) {
//Word文档
case WordDocument:
byteArrayToFile(object.getOleData(), "output/extractOLE.docx");
break;
//PowerPoint文档
case PowerPointSlide:
byteArrayToFile(object.getOleData(), "output/extractOLE.pptx");
break;
//PDF文档
case AdobeAcrobatDocument:
byteArrayToFile(object.getOleData(), "output/extractOLE.pdf");
break;
//Excel文档
case ExcelWorksheet:
byteArrayToFile(object.getOleData(), "output/extractOLE.xlsx");
break;
}
}
}
}
public static void byteArrayToFile(byte[] datas, String destPath) {
File dest = new File(destPath);
try (InputStream is = new ByteArrayInputStream(datas);
OutputStream os = new BufferedOutputStream(new FileOutputStream(dest, false));) {
byte[] flush = new byte[1024];
int len = -1;
while ((len = is.read(flush)) != -1) {
os.write(flush, 0, len);
}
os.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
提取结果:

Spire.Presentation for Java 3.6.0现已发布。该版本主要修复了一些PPT转Image及操作PPT文档时出现的问题。详情参见下文。
问题修复:
https://www.e-iceblue.cn/Downloads/Spire-Presentation-JAVA.html
本文介绍如何使用Spire.XLS for Java根据Excel中某列值的大小对Excel数据区域进行排序。
import com.spire.xls.*;
public class SortData {
public static void main(String[] args) {
//创建Workbook对象
Workbook workbook = new Workbook();
//加载测试文档
workbook.loadFromFile("G:\\360MoveData\\Users\\Administrator\\Desktop\\学生成绩表.xlsx");
//获取第一个工作表
Worksheet sheet = workbook.getWorksheets().get(0);
//指定要排序的列号(列号从0开始)以及排序方式(升序或降序)
workbook.getDataSorter().getSortColumns().add(7, SortComparsionType.Values, OrderBy.Descending);
//指定要排序的数据区域
workbook.getDataSorter().sort(sheet.getCellRange("A1:H9"));
//保存文档
workbook.saveToFile("SortData.xlsx", ExcelVersion.Version2013);
}
}

该文将介绍如何使用Spire.Presentation for Java移除幻灯片中的文本和图片水印。
示例文档:

import com.spire.presentation.*;
import com.spire.presentation.drawing.*;
public class removeTextOrImageWatermark {
public static void main(String[] args) throws Exception {
//加载示例文档
Presentation presentation = new Presentation();
presentation.loadFromFile("Sample.pptx");
//移除文本水印
for (int i = 0; i < presentation.getSlides().getCount(); i++)
{
for (int j = 0; j < presentation.getSlides().get(i).getShapes().getCount(); j++)
{
if (presentation.getSlides().get(i).getShapes().get(j) instanceof IAutoShape)
{
IAutoShape shape = (IAutoShape)presentation.getSlides().get(i).getShapes().get(j);
if (shape.getTextFrame().getText().contains("E-iceblue"))
{
presentation.getSlides().get(i).getShapes().remove(shape);
}
}
}
}
//移除图片水印
for (int i = 0; i < presentation.getSlides().getCount(); i++)
{
presentation.getSlides().get(i).getSlideBackground().getFill().setFillType(FillFormatType.NONE);
}
//保存文档
presentation.saveToFile("removeTextOrImageWatermark.pptx";, FileFormat.PPTX_2013);
}
}
效果图:

Word 文档的页眉和页脚分别位于文档页面的顶部和底部,用于显示页码、文档标题和作者等信息。但当需要打印文档或共享文档时,可能需要删除这些信息以保护隐私。此外,页眉和页脚会占用打印纸上宝贵的空间,并且可能会干扰文档的整体格式。删除页眉页脚可以腾出页面空间,并确保文档格式不会因其变得混乱。本文将演示如何使用 Spire.Doc for Java 在 Java 程序中删除 Word 文档的页眉和页脚。
首先,您需要在 Java 程序中添加 Spire.Doc.jar 文件作为依赖项。您可以从此链接下载 JAR 文件;如果您使用 Maven,则可以通过在 pom.xml 文件中添加以下代码导入 JAR 文件。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.doc</artifactId>
<version>14.9.5</version>
</dependency>
</dependencies>
在 Word 文档中,可以为首页、奇数页和偶数页设置不同的页眉和页脚。这些页眉页脚类型可以通过 HeaderFooter.getByHeaderFooterType(hfType) 方法获取,并通过 HeaderFooter.getChildObjects().clear() 方法删除。
以下是枚举及其代表的页眉和页脚类型的列表。
| 枚举 | 描述 |
| HeaderFooterType.Header_First_Page | 代表首页页眉。 |
| HeaderFooterType.Footer_First_Page | 代表首页页脚。 |
| HeaderFooterType.Header_Odd | 代表奇数页页眉。 |
| HeaderFooterType.Footer_Odd | 代表奇数页页脚。 |
| HeaderFooterType.Header_Even | 代表偶数页页眉。 |
| HeaderFooterType.Footer_Even | 代表偶数页页脚。 |
以下是详细操作步骤:
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.HeaderFooter;
import com.spire.doc.Section;
import com.spire.doc.documents.HeaderFooterType;
public class removeHeaderFooter {
public static void main(String[] args) {
//创建一个Document类的对象
Document doc = new Document();
//载入Word文档
doc.loadFromFile("示例.docx");
//获取文档第一节
Section section = doc.getSections().get(0);
//获取首页页眉并清除其中的内容
HeaderFooter header = section.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.Header_First_Page);
header.getChildObjects().clear();
//获取首页页脚并清除其中的内容
HeaderFooter footer = section.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.Footer_First_Page);
footer.getChildObjects().clear();
//获取奇数页的页眉页脚并清除其中的内容
//HeaderFooter header1 = section.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.Header_Odd);
//header1.getChildObjects().clear();
//HeaderFooter footer1 = section.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.Footer_Odd);
//footer1.getChildObjects().clear();
//获取偶数页的页眉页脚并清除其中的内容
//HeaderFooter header2 = section.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.Header_Even);
//header2.getChildObjects().clear();
//HeaderFooter footer2 = section.getHeadersFooters().getByHeaderFooterType(HeaderFooterType.Footer_Even);
//footer2.getChildObjects().clear();
//保存文档
doc.saveToFile("按页眉页脚类型移除.docx", FileFormat.Auto);
doc.dispose();
}
}
不同节可能有不同的页眉页脚。要删除某个节的页眉和页脚,可以使用 Document.getSections().get() 方法获取该节,然后使用 HeaderFooter.getChildObjects().clear() 方法删除其中的页眉和页脚。
需要注意的是,删除一节中的页眉和页脚内容后,该节的页眉页脚将自动变更为上一节的页眉页脚。因此,有必要在删除页眉和页脚后添加一个空白段落,以防止其自动变更。
具体步骤如下:
import com.spire.doc.Document;
import com.spire.doc.HeaderFooter;
import com.spire.doc.Section;
public class removeHeaderFooterSection {
public static void main(String[] args) {
//创建一个Document类的对象
Document doc = new Document();
//载入Word文档
doc.loadFromFile("示例1.docx");
//获取文档第二节
Section section = doc.getSections().get(1);
//获取该节的页眉,移除其中的内容,然后在其中添加一个空白段落
HeaderFooter header1 = section.getHeadersFooters().getHeader();
header1.getChildObjects().clear();
header1.addParagraph();
//获取该节的页脚,移除其中的内容,然后在其中添加一个空白段落
HeaderFooter footer1 = section.getHeadersFooters().getFooter();
footer1.getChildObjects().clear();
footer1.addParagraph();
//保存文档
doc.saveToFile("按节删除页眉页脚.docx");
doc.dispose();
}
}
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.Doc for Java 3.5.5已发布。该版本在文档打印质量上做了改进和提升,并修复了在转换Word为PDF、 提取公式值以及加载文档时出现的一些问题。新功能及问题修复详情如下。
新功能:
Document loDoc = new Document(inputFile);
PrinterJob loPrinterJob = PrinterJob.getPrinterJob();
PageFormat loPageFormat = loPrinterJob.defaultPage();
Paper loPaper = loPageFormat.getPaper();
//删除默认的打印页边距
loPaper.setImageableArea(0,0,loPageFormat.getWidth(),loPageFormat.getHeight());
//设置副本的数量
loPrinterJob.setCopies(1);
loPageFormat.setPaper(loPaper);
loPrinterJob.setPrintable(loDoc,loPageFormat);s
try {
loPrinterJob.print();
} catch (PrinterException e)
{
e.printStackTrace();
}
问题修复:
本文将介绍如何使用Spire.XLS for Java将Excel工作表中的单列文本拆分为多列。
原Excel文档:

import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
public class ConvertTextToColumns {
public static void main(String[] args){
//创建Workbook实例
Workbook workbook = new Workbook();
//加载Excel文档
workbook.loadFromFile("Template.xlsx");
//获取第一个工作表
Worksheet sheet = workbook.getWorksheets().get(0);
String[] splitText = null;
String text = null;
//将工作表中第一列的文本根据分隔符(空格)拆分为多列
for (int i = 1; i < sheet.getLastRow()+1; i++)
{
text = sheet.getRange().get(i, 1).getText();
splitText = text.split(" ");
for (int j = 0; j < splitText.length; j++)
{
sheet.getRange().get(i, 1 + j + 1).setText(splitText[j]);
}
}
//保存结果文档
workbook.saveToFile("ConvertTextToColumns.xlsx", ExcelVersion.Version2013);
}
}
结果文档:

Spire.XLS for Java 3.5.7 现已发布。该版本支持拷贝单元格时只保留公式值,并新增了转换Excel到HTML的方法。除此之外,一些在转换Excel到图片及复制sheet时出现的问题也得以成功解决。详情见下文。
新功能:
Worksheet sheet = workbook.getWorksheets().get(0);
CopyRangeOptions copyOptions = CopyRangeOptions.OnlyCopyFormulaValue;
sheet.copy(sheet.getCellRange("A6:E6"), sheet.getCellRange("A8:E8"), EnumSet.of(copyOptions));
workbook.saveToFile(filename,FileFormat.HTML)
问题修复: