Office Open XML(也被称为 OOXML)是一种压缩的、基于 XML 的 Excel、Word 和演示文档格式。有时,你可能需要将 Excel 文件转换为 Office Open XML,以使其在各种应用程序和平台上可读。同样,你可能也想把 Office Open XML 转换为 Excel,以便进行数据计算。在这篇文章中,你将学习如何在 Java 中使用 Spire.XLS for Java 库将 Excel 转换为 Office Open XML 以及 Office Open XML 转 Excel。
首先,你需要在你的 Java 程序中添加 Spire.Xls.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.xls</artifactId>
<version>15.11.3</version>
</dependency>
</dependencies>
以下是将 Excel 文件转换为 Office Open XML 的步骤。
import com.spire.xls.Workbook;
public class ExcelToOpenXML {
public static void main(String []args){
//创建一个Workbook实例
Workbook workbook = new Workbook();
//加载Excel文件
workbook.loadFromFile("Sample.xlsx");
//保存为Office Open XML文件格式
workbook.saveAsXml("ToXML.xml");
}
}
以下是将 Office Open XML 文件转换为 Excel 的步骤。
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
public class OpenXmlToExcel {
public static void main(String []args){
//创建一个Workbook实例
Workbook workbook = new Workbook();
//加载Office Open XML文件
workbook.loadFromXml("ToXML.xml");
//保存为Excel XLSX文件格式
workbook.saveToFile("ToExcel.xlsx", ExcelVersion.Version2016);
}
}
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.Presentation 7.9.2 已发布。该版本新增支持转换 PPT 到 PDF 时设置不转换隐藏的幻灯片以及查找幻灯片中第一个出现的匹配文本并修改其样式。同时,本次更新还增强了 PPT 到图片的转换。此外,该版本还修复了许多已知问题。详情请阅读以下内容。
新功能:
Presentation ppt = new Presentation();
ppt.LoadFromFile(inputFile);
string text = "create";
TextRange textRange = ppt.Slides[0].FindFirstTextAsRange(text);
textRange.Fill.FillType = FillFormatType.Solid;
textRange.Fill.SolidColor.Color = Color.Red;
textRange.FontHeight = 28;
textRange.LatinFont = new TextFont("微软雅黑");
textRange.IsBold = TriState.True;
textRange.IsItalic = TriState.True;
textRange.TextUnderlineType = TextUnderlineType.Double;
textRange.TextStrikethroughType = TextStrikethroughType.Single; Presentation presentation = new Presentation();
presentation.LoadFromFile(https://cdn.e-iceblue.cn/input);
presentation.SaveToPdfOption.ContainHiddenSlides = false;
presentation.SaveToFile(output, FileFormat.PDF);问题修复:
https://www.e-iceblue.cn/Downloads/Spire-Presentation-NET.html
在我们打印或分享 PDF 文件时,最好先检查一下文件中是否有空白页面。这些空白页面不仅会造成纸张的浪费,还会让我们的文档显得不那么专业。但如果一页一页地翻阅文档,特别是那些比较大的文档,来查找并删除空白页面,会耗费很多时间和精力。我们可以选择使用简单方便的 Spire.PDF for Java 来解决这个问题。本文将展示如何使用 Spire.PDF for Java 通过编程简单快速地找到并删除 PDF 文档中的空白页面。
首先,您需要在 Java 程序中添加 Spire.Pdf.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.pdf</artifactId>
<version>11.11.11</version>
</dependency>
</dependencies>
Spire.PDF for Java 提供了 PdfPageBase.isBlank() 方法来检测页面是否为完全空白的页面。但有些看起来空白的页面实际上包含有白色的图片,因此使用 PdfPageBase.isBlank() 方法无法检测出这样的空白页面。因此,我们需要自定义一个 isBlankImage() 方法来与 PdfPageBase.isBlank() 方法共同使用以检测出所有空白页面。
注意:本文所使用的方法需要将 PDF 页面转换为图片并判断图片是否为空白图片来检测空白页面,因此需要申请许可来移除转换出的图片上的评估信息,否则无法正常完成对空白页面地检测。如果你没有许可,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取临时许可。
详细操作步骤如下:
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfImageType;
import java.awt.*;
import java.awt.image.BufferedImage;
public class removeBlankPages {
public static void main(String []args){
//创建 PdfDocument 类的对象
PdfDocument pdf = new PdfDocument();
//载入PDF文件
pdf.loadFromFile("C:/Sample.pdf");
BufferedImage image;
//循环遍历PDF中的页面
for(int i = pdf.getPages().getCount()-1; i>=0; i--)
{
//获取页面
PdfPageBase page = pdf.getPages().get(i);
//检测页面是否完全空白
if(page.isBlank())
{
//删除完全空白的页面
pdf.getPages().remove(page);
}
else
{
//将页面转换为图片
image = pdf.saveAsImage(i, PdfImageType.Bitmap);
//检测转换出的图片是否为空白图片
if (isBlankImage(image))
{
//删除空白图片所对应的页面
pdf.getPages().remove(page);
}
}
}
//保存结果文档
pdf.saveToFile("删除空白页面.pdf");
}
//检测图片是否为空白图片
public static boolean isBlankImage(BufferedImage image)
{
BufferedImage bufferedImage = image;
Color pixel;
for (int i = 0; i < bufferedImage.getWidth(); i++)
{
for (int j = 0; j < bufferedImage.getHeight(); j++)
{
pixel = new Color(bufferedImage.getRGB(i, j));
if (pixel.getRed() < 240 || pixel.getGreen() < 240 || pixel.getBlue() < 240)
{
return false;
}
}
}
return true;
}
}
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
可扩展标记语言,即 Extensible Markup Language, XML,可以用来标记数据、定义数据类型。Miacrosoft Excel 中可直接通过文件另存为的方式将 Excel 文档保存为 XML 格式。我们通过后端程序,可以使用 Spire.XLS for Java 提供的方法来实现转换。本文中的代码示例将分别从以下两种情况来展示如何转换:
首先,您需要在 Java 程序中添加 Spire.Xls.jar 文件作为依赖项。您可以从这个链接下载 JARs 文件;如果您使用 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.xls</artifactId>
<version>15.11.3</version>
</dependency>
</dependencies>
转换时参考如下步骤执行:
import com.spire.xls.*;
public class ExcelToXML {
public static void main(String[] args) {
//创建Workbook类的对象
Workbook wb = new Workbook();
//加载Excel文档
wb.loadFromFile("input.xlsx");
//保存为XML文件
wb.saveAsXml("ToXML.xml");
}
}
转换步骤如下:
import com.spire.xls.*;
public class XmlToExcel {
public static void main(String[] args) {
//创建Workbook类的对象
Workbook wb = new Workbook();
//加载XML文档
wb.loadFromXml("sample.xml");
//转为xlsx格式的Excel
wb.saveToFile("toExcel.xlsx",FileFormat.Version2013);
}
}
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
WPS 表格文件是金山开发的专门用于处理表格数据的 Office 工具,属于 WPS Office 中 WPS 文字、WPS 表格和 WPS 演示三大功能模块之一。通常以 .et 和 .ett 作为文件后缀。我们在通过后端来操作 WPS 表格文件时,可以通过使用 Spire.XLS for Java 来加载、编辑以及保存 WPS 表格文件,本文将对此做详细介绍。
首先,您需要在 Java 程序中添加 Spire.Xls.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.xls</artifactId>
<version>15.11.3</version>
</dependency>
</dependencies>
操作 WPS 表格文件,可参考执行如下代码步骤:
import com.spire.xls.*;
public class OperateWPSExcel {
public static void main(String[] args) {
//创建Workbook类的对象
Workbook workbook = new Workbook();
//加载WPS表格文档
workbook.loadFromFile("test.et");//支持.ett格式
//获取第一个工作表
Worksheet sheet = workbook.getWorksheets().get(0);
//向工作表的指定单元格填充数据
sheet.getCellRange("B4").setText("办公桌");
sheet.getCellRange("C4").setText("台");
sheet.getCellRange("D4").setText("800");
sheet.getCellRange("E4").setText("6");
sheet.getCellRange("F4").setText("4800");
//设置单元格居中对齐效果
sheet.getCellRange("B4:F4").setHorizontalAlignment(HorizontalAlignType.Center);
//保存文档为.et格式
workbook.saveToFile("Result.et", FileFormat.ET);
//保存文档为.ett格式
//wb.saveToFile("WPS.ett", FileFormat.ETT);
}
}
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.XLS for Java 12.9.2已发布。本次更新支持获取条件格式的颜色。并增强了Excel到PDF的转换功能。此外,还修复了在Linux系统获取RichText,程序抛"System.ArgumentException"异常等已知问题。详情请阅读以下内容。
新功能:
Color color = cRange.GetConditionFormatsStyle().Color;问题修复:
在 Word 中创建报告时,我们经常会遇到这样的情况:我们需要将数据从 Excel 中复制和粘贴到 Word 中,这样读者就可以直接在 Word 中浏览数据,而不用打开 Excel 文档。在本文中,您将学习如何使用 Spire.Office for Java 将 Excel 数据转换为 Word 表格并保留格式。
首先,你需要在你的 Java 程序中添加 Spire.Office.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.office</artifactId>
<version>10.11.0</version>
</dependency>
</dependencies>
以下是使用 Spire.Office for Java 将 Excel 数据转换为 Word 表格并保留格式的步骤。
import com.spire.doc.*;
import com.spire.doc.FileFormat;
import com.spire.doc.documents.HorizontalAlignment;
import com.spire.doc.documents.PageOrientation;
import com.spire.doc.documents.VerticalAlignment;
import com.spire.doc.fields.TextRange;
import com.spire.xls.*;
public class ExportExcelToWord {
public static void main(String[] args) {
//下载一个Excel文件
Workbook workbook = new Workbook();
workbook.loadFromFile("C:/Users/Administrator/Desktop/sample.xlsx");
//得到第一张工作表
Worksheet sheet = workbook.getWorksheets().get(0);
//创建一个Word文档
Document doc = new Document();
Section section = doc.addSection();
section.getPageSetup().setOrientation(PageOrientation.Landscape);
//添加一个表格
Table table = section.addTable(true);
table.resetCells(sheet.getLastRow(), sheet.getLastColumn());
//合并单元格
mergeCells(sheet, table);
for (int r = 1; r <= sheet.getLastRow(); r++) {
//设置行高
table.getRows().get(r - 1).setHeight((float) sheet.getRowHeight(r));
for (int c = 1; c <= sheet.getLastColumn(); c++) {
CellRange xCell = sheet.getCellRange(r, c);
TableCell wCell = table.get(r - 1, c - 1);
//获得特定Excel单元格的值并将其添加到Word表格单元格
TextRange textRange = wCell.addParagraph().appendText(xCell.getValue());
// 从Excel复制字体和单元格样式到Word
copyStyle(textRange, xCell, wCell);
}
}
//保存文档为Word文件
doc.saveToFile("ExportToWord.docx", FileFormat.Docx);
}
//如果有合并的区域,则合并单元格
private static void mergeCells(Worksheet sheet, Table table) {
if (sheet.hasMergedCells()) {
//从Excel中获取合并的单元格范围
CellRange[] ranges = sheet.getMergedCells();
for (int i = 0; i < ranges.length; i++) {
int startRow = ranges[i].getRow();
int startColumn = ranges[i].getColumn();
int rowCount = ranges[i].getRowCount();
int columnCount = ranges[i].getColumnCount();
//合并Word表格中的对应单元格
if (rowCount > 1 && columnCount > 1) {
for (int j = startRow; j <= startRow + rowCount ; j++) {
table.applyHorizontalMerge(j - 1, startColumn - 1, startColumn - 1 + columnCount - 1);
}
table.applyVerticalMerge(startColumn - 1, startRow - 1, startRow - 1 + rowCount - 1 );
}
if (rowCount > 1 && columnCount == 1 ) {
table.applyVerticalMerge(startColumn - 1, startRow - 1, startRow - 1 + rowCount - 1);
}
if (columnCount > 1 && rowCount == 1 ) {
table.applyHorizontalMerge(startRow - 1, startColumn - 1, startColumn - 1 + columnCount-1);
}
}
}
}
//复制Excel单元格样式到Word表格
private static void copyStyle(TextRange wTextRange, CellRange xCell, TableCell wCell) {
//复制字体样式
wTextRange.getCharacterFormat().setTextColor(xCell.getStyle().getFont().getColor());
wTextRange.getCharacterFormat().setFontSize((float) xCell.getStyle().getFont().getSize());
wTextRange.getCharacterFormat().setFontName(xCell.getStyle().getFont().getFontName());
wTextRange.getCharacterFormat().setBold(xCell.getStyle().getFont().isBold());
wTextRange.getCharacterFormat().setItalic(xCell.getStyle().getFont().isItalic());
//复制背景色
wCell.getCellFormat().setBackColor(xCell.getStyle().getColor());
//复制水平对齐方式
switch (xCell.getHorizontalAlignment()) {
case Left:
wTextRange.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Left);
break;
case Center:
wTextRange.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Center);
break;
case Right:
wTextRange.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Right);
break;
}
//复制垂直对齐方式
switch (xCell.getVerticalAlignment()) {
case Bottom:
wCell.getCellFormat().setVerticalAlignment(VerticalAlignment.Bottom);
break;
case Center:
wCell.getCellFormat().setVerticalAlignment(VerticalAlignment.Middle);
break;
case Top:
wCell.getCellFormat().setVerticalAlignment(VerticalAlignment.Top);
break;
}
}
}
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.Doc 10.9.6 已发布。本次更新增强了 Word 到 PDF 的转换。详情请阅读以下内容。
问题修复:
Spire.Office for Java 7.9.6 已发布。本次更新带来了一些新功能,如:Spire.XLS for Java 支持自定义排序及将Excel 2016定义的Chart类型转换为PDF和图片;Spire.PDF for Java 支持创建无序列表。同时,Spire.Doc for Java 增强了 Word 到 PDF 的转换。此外,许多已知问题也被成功修复。详情请阅读以下内容。
获取 Spire.Office for Java 7.9.6 请点击:https://www.e-iceblue.cn/Downloads/Spire-Office-JAVA.html
新功能:
wb.getDataSorter().getSortColumns().add(0, new String[]
{"12345","Argentina", "Area", "Chile", "Capital","USA","Ecuador","Guyana"}
); wb.getDataSorter().sort(wb.getWorksheets().get(0).getRange().get("A1:A8"));问题修复:
新功能:
public void DrawMarker(PdfUnorderedMarkerStyle style, String outputFile) {
PdfDocument doc = new PdfDocument();
PdfNewPage page = (PdfNewPage) doc.getPages().add();
PdfMarker marker = new PdfMarker(style);
String listContent = "Data Structure\n"
+ "Algorithm\n"
+ "Computer Newworks\n"
+ "Operating System\n"
+ "C Programming\n"
+ "Computer Organization and Architecture";
PdfUnorderedList list = new PdfUnorderedList(listContent);
list.setIndent(2);
list.setTextIndent(4);
list.setMarker(marker);
list.draw(page, 100, 100);
doc.saveToFile(outputFile, FileFormat.PDF);
doc.close();
}
public void PdfMarker_CustomImage() throws Exception {
String outputFile = "PdfMarker_CustomImage.pdf";
String inputFile_Img = "sample.png";
PdfDocument doc = new PdfDocument();
PdfNewPage page = (PdfNewPage) doc.getPages().add();
PdfMarker marker = new PdfMarker(PdfUnorderedMarkerStyle.Custom_Image);
marker.setImage(PdfImage.fromFile(inputFile_Img));
String listContent = "Data Structure\n"
+ "Algorithm\n"
+ "Computer Newworks\n"
+ "Operating System\n"
+ "C Programming\n"
+ "Computer Organization and Architecture";
PdfUnorderedList list = new PdfUnorderedList(listContent);
list.setIndent(2);
list.setTextIndent(4);
list.setMarker(marker);
list.draw(page, 100, 100);
doc.saveToFile(outputFile, FileFormat.PDF);
doc.close();
}
public void PdfMarker_CustomTemplate() throws Exception {
String outputFile = "PdfMarker_CustomTemplate.pdf";
String inputFile_Img = "sample.png";
PdfDocument doc = new PdfDocument();
PdfNewPage page = (PdfNewPage) doc.getPages().add();
PdfMarker marker = new PdfMarker(PdfUnorderedMarkerStyle.Custom_Template);
PdfTemplate template = new PdfTemplate(210, 210);
marker.setTemplate(template);
template.getGraphics().drawImage(PdfImage.fromFile(inputFile_Img), 0, 0);
String listContent = "Data Structure\n"
+ "Algorithm\n"
+ "Computer Newworks\n"
+ "Operating System\n"
+ "C Programming\n"
+ "Computer Organization and Architecture";
PdfUnorderedList list = new PdfUnorderedList(listContent);
list.setIndent(2);
list.setTextIndent(4);
list.setMarker(marker);
list.draw(page, 100, 100);
doc.saveToFile(outputFile, FileFormat.PDF);
doc.close();
}
public void PdfMarker_CustomString() throws Exception {
String outputFile = "PdfMarker_CustomString.pdf";
PdfDocument doc = new PdfDocument();
PdfNewPage page = (PdfNewPage) doc.getPages().add();
PdfMarker marker = new PdfMarker(PdfUnorderedMarkerStyle.Custom_String);
marker.setText("AAA");
String listContent = "Data Structure\n"
+ "Algorithm\n"
+ "Computer Newworks\n"
+ "Operating System\n"
+ "C Programming\n"
+ "Computer Organization and Architecture";
PdfUnorderedList list = new PdfUnorderedList(listContent);
list.setIndent(2);
list.setTextIndent(4);
list.setMarker(marker);
list.draw(page, 100, 100);
doc.saveToFile(outputFile, FileFormat.PDF);
doc.close();功能调整:
问题修复:
问题修复:
XML,即可扩展标记语言(Extensible Markup Language, XML),可用以标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言,易于在应用程序中读/写数据,常用于接口调用,配置文件,数据存储等场景。常见的获得 XML 文件的方法是通过 MicroSoft Word 将 Word 文件另存为 XML 文件。本文,将介绍如何通过使用 Spire.Doc for Java 来实现 Word 文档和 XML 文件的相互转换。代码将分别从以下两个转换示例来展示如何转换:
首先,您需要在 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>13.12.2</version>
</dependency>
</dependencies>
Spire.Doc for Java 提供了直接的方法用于加载文档以及保存为目标文档格式。下面是实现格式转换的代码步骤:
import com.spire.doc.*;
public class WordtoXML {
public static void main(String[] args) {
//加载Word测试文档
Document doc = new Document();
doc.loadFromFile("https://cdn.e-iceblue.cn/test.docx");//支持doc格式
//调用方法转为xml文件
doc.saveToFile("toXml.xml.",FileFormat.Word_Xml);
}
}
转换的步骤如下:
import com.spire.doc.*;
public class XMLtoWord {
public static void main(String[] args) {
//创建实例,加载xml测试文档
Document doc = new Document();
doc.loadFromFile("input.xml");
//保存为Word
doc.saveToFile("toWord.docx",FileFormat.Docx);//支持.doc
}
}
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。