Spire.XLS for Java 12.12.4 已发布。本次更新增强了 Excel 到 PDF 和图片以及 XLSM 到 PDF 的转换。此外,许多已知问题也在该版本成功被修复,如创建的透视表的日期格式不正确和绘制图片水印时透明度丢失的问题。详情请阅读以下内容。
问题修复:
Spire.Doc 10.12.4 已发布。该版本新增支持 .NET 7.0 平台。同时,该版本支持为段落设置“如果定义了文档网格,则对齐到网格”功能,并增强了Word 到 PDF的转换功能。此外,还修复了文本取代后字符间距改变等已知问题。详情请阅读以下内容。
新功能:
Document document = new Document(inputFile);
Paragraph paragraph = document.Sections[0].Paragraphs[0];
paragraph.Format.SnapToGrid = true;问题修复:
Spire.PDF 8.12.7 已发布。该版本增加了转换 PDF 到 Word 的新接口。本次更新还增强了 PDF 到 Excel 的转换功能。此外,该版本还修复了许多已知问题,如通过位置查找到的文本内容不正确的问题。详情请阅读以下内容。
新功能:
PdfToWordConverter converter= new PdfToWordConverter (inputPDF);
converter.SaveToDocx(outputWord);
converter.Dispose(); 问题修复:
Word 和 Excel 在用途和功能方面彼此不同。Word 主要用于文本文档,如论文、电子邮件、信件、书籍、简历或学术论文,其中文本格式是必不可少的。Excel 用于保存数据、制作表格和图表以及进行复杂的计算。
不建议将复杂的 Word 文件转换为 Excel 电子表格,因为 Excel 很难像 Word 一样呈现内容。但是,如果你的 Word 文档主要由表格组成,而你想在 Excel 中分析表格数据,则可以使用 Spire.Office for Java 将 Word 转为 Excel,并同时保持良好的可读性。
首先,您需要在 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 包中的两个库。分别是 Spire.Doc for Java 和 Spire.XLS for Java。前者用于从 Word 文档中读取和提取内容,后者用于创建 Excel 文档并在特定单元格中写入数据。为了使此代码示例易于理解,我们创建了以下三个执行特定功能的自定义方法。
以下步骤演示了如何使用 Spire.Office for Java 将数据从 Word 文档导出到工作表。
import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.fields.DocPicture;
import com.spire.doc.fields.TextRange;
import com.spire.xls.*;
import java.awt.*;
public class ConvertWordToExcel {
public static void main(String[] args) {
//创建一个 Document 对象
Document doc = new Document();
//加载 Word 文件
doc.loadFromFile("https://cdn.e-iceblue.cn/XXX公司采购单.docx");
//创建一个 Workbook 对象
Workbook wb = new Workbook();
//删除默认工作表
wb.getWorksheets().clear();
//创建一个名为“WordToExcel”的工作表
Worksheet worksheet = wb.createEmptySheet("WordToExcel");
int row = 1;
int column = 1;
//循环遍历 Word 文档中的各个节
for (int i = 0; i < doc.getSections().getCount(); i++) {
//获取特定节
Section section = doc.getSections().get(i);
//遍历某个节下的所有文档对象
for (int j = 0; j < section.getBody().getChildObjects().getCount(); j++) {
//获取特定的文档对象
DocumentObject documentObject = section.getBody().getChildObjects().get(j);
//判断对象是否为段落
if (documentObject instanceof Paragraph) {
CellRange cell = worksheet.getCellRange(row, column);
Paragraph paragraph = (Paragraph) documentObject;
//将段落从 Word 复制到特定单元格
copyTextAndStyle(cell, paragraph);
row++;
}
//判断对象是否为表格
if (documentObject instanceof Table) {
Table table = (Table) documentObject;
//将表格数据从 Word 导出到 Excel
int currentRow = exportTableInExcel(worksheet, row, table);
row = currentRow;
}
}
}
//在单元格中换行文本
worksheet.getAllocatedRange().isWrapText(true);
//自动调整行高和列宽
worksheet.getAllocatedRange().autoFitRows();
worksheet.getAllocatedRange().autoFitColumns();
//将工作簿保存到 Excel 文件
wb.saveToFile("output.xlsx", ExcelVersion.Version2013);
}
//将数据从 Word 表格导出到 Excel 单元格
private static int exportTableInExcel(Worksheet worksheet, int row, Table table) {
CellRange cell;
int column;
for (int i = 0; i < table.getRows().getCount(); i++) {
column = 1;
TableRow tbRow = table.getRows().get(i);
for (int j = 0; j < tbRow.getCells().getCount(); j++) {
TableCell tbCell = tbRow.getCells().get(j);
cell = worksheet.getCellRange(row, column);
cell.borderAround(LineStyleType.Thin, Color.BLACK);
copyContentInTable(tbCell, cell);
column++;
}
row++;
}
return row;
}
//将内容从 Word 表格单元格复制到 Excel 单元格
private static void copyContentInTable(TableCell tbCell, CellRange cell) {
Paragraph newPara = new Paragraph(tbCell.getDocument());
for (int i = 0; i < tbCell.getChildObjects().getCount(); i++) {
DocumentObject documentObject = tbCell.getChildObjects().get(i);
if (documentObject instanceof Paragraph) {
Paragraph paragraph = (Paragraph) documentObject;
for (int j = 0; j < paragraph.getChildObjects().getCount(); j++) {
DocumentObject cObj = paragraph.getChildObjects().get(j);
newPara.getChildObjects().add(cObj.deepClone());
}
if (i < tbCell.getChildObjects().getCount() - 1) {
newPara.appendText("\n");
}
}
}
copyTextAndStyle(cell, newPara);
}
//将段落的文本和样式复制到单元格
private static void copyTextAndStyle(CellRange cell, Paragraph paragraph) {
RichText richText = cell.getRichText();
richText.setText(paragraph.getText());
int startIndex = 0;
for (int i = 0; i < paragraph.getChildObjects().getCount(); i++) {
DocumentObject documentObject = paragraph.getChildObjects().get(i);
if (documentObject instanceof TextRange) {
TextRange textRange = (TextRange) documentObject;
String fontName = textRange.getCharacterFormat().getFontName();
boolean isBold = textRange.getCharacterFormat().getBold();
Color textColor = textRange.getCharacterFormat().getTextColor();
float fontSize = textRange.getCharacterFormat().getFontSize();
String textRangeText = textRange.getText();
int strLength = textRangeText.length();
ExcelFont font = new ExcelFont(cell.getWorksheet().getWorkbook().createFont());
font.setColor(textColor);
font.isBold(isBold);
font.setSize(fontSize);
font.setFontName(fontName);
int endIndex = startIndex + strLength;
richText.setFont(startIndex, endIndex, font);
startIndex += strLength;
}
if (documentObject instanceof DocPicture) {
DocPicture picture = (DocPicture) documentObject;
cell.getWorksheet().getPictures().add(cell.getRow(), cell.getColumn(), picture.getImage());
cell.getWorksheet().setRowHeightInPixels(cell.getRow(), 1, picture.getImage().getHeight());
}
}
switch (paragraph.getFormat().getHorizontalAlignment()) {
case Left:
cell.setHorizontalAlignment(HorizontalAlignType.Left);
break;
case Center:
cell.setHorizontalAlignment(HorizontalAlignType.Center);
break;
case Right:
cell.setHorizontalAlignment(HorizontalAlignType.Right);
break;
}
}
}
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.Office 7.12 已发布。在本次更新中,Spire.PDF支持设置表单域的可见与隐藏属性、添加自定义的元数据以及给 PDF 文档的元数据添加新的命名空间;Spire.XLS新增支持 .NET 7.0 平台;Spire.Presentation修复了将PPT幻灯片保存为图像后,内容丢失的问题。此外,本次更新还成功修复了大量已知问题。详情请阅读以下内容。
该版本涵盖了最新版的 Spire.Doc,Spire.PDF,Spire.XLS,Spire.Email,Spire.DocViewer, Spire.PDFViewer,Spire.Presentation,Spire.Spreadsheet, Spire.OfficeViewer, Spire.DocViewer, Spire.Barcode, Spire.DataExport。
版本信息如下:
https://www.e-iceblue.cn/Downloads/Spire-Office-NET.html
新功能:
Spire.Pdf.Fields.PdfField field = formWidget.FieldsWidget.List[0] as Spire.Pdf.Fields.PdfField;
//field.AnnotationFlags = Spire.Pdf.Annotations.PdfAnnotationFlags.Default; // Setting visibility
field.AnnotationFlags = Spire.Pdf.Annotations.PdfAnnotationFlags.Hidden; // Setting hiddenusing(PdfDocument doc = new PdfDocument("1.pdf"))
{
using(Stream stream = new FileStream('1.xml',FileMode.Open))
{
doc.Metadata = PdfXmlMetadata.Parse(stream);
}
doc.SaveToFile('result.pdf');
}PdfXmlMetadata.RegisterNamespace("http://myRandomNamespace", "zf");
using(PdfDocument doc = new PdfDocument("1.pdf"))
{
doc.Metadata.SetPropertyString("http://myRandomNamespace", "test1","my test");
doc.SaveToFile('result.pdf');
}
PdfXmlMetadata.ResetNamespaces();问题修复:
问题修复:
Spire.XLS 12.12.3 已发布。该版本新增支持 .NET 7.0 平台。同时,本次更新还增强了 Excel 到 PDF 和 CSV 以及 HTML 到 Excel 的转换功能。此外,一些已知问题也在该版本得到成功修复,如调用 Save() 函数保存 .et 格式文档修改的数据时保存失败的问题。详情请阅读以下内容。
问题修复:
将 Excel 文档发送给其他人审阅时,建议打开修订功能以确保记录对工作表或工作簿所做的所有更改。对于 Excel 中已更改的单元格,每个单元格将在其左上角用蓝色三角形突出显示。然后,您可以查看更改并决定是否接受或拒绝修订。本文将演示如何使用Spire.XLS for .NET 以编程方式接受或拒绝 Excel 中的所有修订.
首先,您需要添加 Spire.XLS for .NET 包中包含的 DLL 文件作为 .NET 项目中的引用。DLL 文件可以从此链接下载或通过 NuGet 安装。
PM> Install-Package Spire.XLS要接受工作簿中的修订,您首先需要使用 Workbook.HasTrackedChanges 属性确定工作簿是否含有跟踪修订。如果是,则可以使用 WorkBook.AcceptallTrackedChanges() 方法一次接受所有修订。以下是接受 Excel 工作簿中所有修订的步骤。
using Spire.Xls;
namespace AcceptTrackedChanges
{
class Program
{
static void Main(string[] args)
{
//创建一个Workbook对象
Workbook workbook = new Workbook();
//加载示例文档
workbook.LoadFromFile("示例文档.xlsx");
//确认工作簿是否含有跟踪修订
if (workbook.HasTrackedChanges)
{
//接受工作簿中的所有修订
workbook.AcceptAllTrackedChanges();
}
//保存结果文档
workbook.SaveToFile("接受修订.xlsx", FileFormat.Version2013);
}
}
}Imports Spire.Xls
Namespace AcceptTrackedChanges
Friend Class Program
Private Shared Sub Main(ByVal args As String())
'创建一个Workbook对象
Dim workbook As Workbook = New Workbook()
'加载示例文档
workbook.LoadFromFile("示例文档.xlsx")
'确认工作簿是否含有跟踪修订
If workbook.HasTrackedChanges Then
'接受工作簿中的所有修订
workbook.AcceptAllTrackedChanges()
End If
'保存结果文档
workbook.SaveToFile("接受修订.xlsx", FileFormat.Version2013)
End Sub
End Class
End Namespace
如果修订已被确认存在于工作簿中,Spire.XLS for.NET 还提供了 Workbook.RejectAllTrackedChanges() 方法,以一次拒绝所有修订。具体步骤如下。
using Spire.Xls;
namespace AcceptTrackedChanges
{
class Program
{
static void Main(string[] args)
{
//创建一个Workbook对象
Workbook workbook = new Workbook();
//加载示例 Excel 文档
workbook.LoadFromFile("示例文档.xlsx");
//确认工作簿是否含有跟踪修订
if (workbook.HasTrackedChanges)
{
//拒绝所有修订
workbook.RejectAllTrackedChanges();
}
//保存结果文档
workbook.SaveToFile("拒绝修订.xlsx", FileFormat.Version2013);
}
}
}Imports Spire.Xls
Namespace AcceptTrackedChanges
Friend Class Program
Private Shared Sub Main(ByVal args As String())
'创建一个Workbook对象
Dim workbook As Workbook = New Workbook()
'加载示例 Excel 文档
workbook.LoadFromFile("示例文档.xlsx")
'确认工作簿是否含有跟踪修订
If workbook.HasTrackedChanges Then
'拒绝所有修订
workbook.RejectAllTrackedChanges()
End If
'保存结果文档
workbook.SaveToFile("拒绝修订.xlsx", FileFormat.Version2013)
End Sub
End Class
End Namespace
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.Presentation 7.12.1已发布。该版本修复了将PPT幻灯片保存为图像后,内容丢失的问题。详情请阅读以下内容。
问题修复:
https://www.e-iceblue.cn/Downloads/Spire-Presentation-NET.html
Spire.PDF for Java 8.12.6 已发布。该版本支持创建标签PDF 文件。本次更新还包含一些性能优化,如:优化了提取图像的耗时以及压缩文档图像时的内存消耗。此外,该版本还修复了许多已知问题。详情请阅读以下内容。
新功能:
//Create a pdf document
PdfDocument doc = new PdfDocument();
//Add page
doc.getPages().add();
//Set tab order
doc.getPages().get(0).setTabOrder(TabOrder.Structure);
//Create PdfTaggedContent
PdfTaggedContent taggedContent = new PdfTaggedContent(doc);
taggedContent.setLanguage("en-US");
taggedContent.setTitle("test");
//Set font
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Times New Roman",Font.PLAIN,12), true);
PdfSolidBrush brush = new PdfSolidBrush(new PdfRGBColor(Color.black));
//Append elements
PdfStructureElement article = taggedContent.getStructureTreeRoot().appendChildElement(PdfStandardStructTypes.Document);
PdfStructureElement paragraph1 = article.appendChildElement(PdfStandardStructTypes.Paragraph);
PdfStructureElement span1 = paragraph1.appendChildElement(PdfStandardStructTypes.Span);
span1.beginMarkedContent(doc.getPages().get(0));
PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Justify);
doc.getPages().get(0).getCanvas().drawString("Spire.PDF for .NET is a professional PDF API applied to creating, writing, editing, handling and reading PDF files.",
font, brush, new Rectangle(40, 0, 480, 80), format);
span1.endMarkedContent(doc.getPages().get(0));
PdfStructureElement paragraph2 = article.appendChildElement(PdfStandardStructTypes.Paragraph);
paragraph2.beginMarkedContent(doc.getPages().get(0));
doc.getPages().get(0).getCanvas().drawString("Spire.PDF for .NET can be applied to easily convert Text, Image, SVG, HTML to PDF and convert PDF to Excel with C#/VB.NET in high quality.",
font, brush, new Rectangle(40, 80, 480, 60), format);
paragraph2.endMarkedContent(doc.getPages().get(0));
PdfStructureElement figure1 = article.appendChildElement(PdfStandardStructTypes.Figure);
//Set Alternate text
figure1.setAlt("replacement text1");
figure1.beginMarkedContent(doc.getPages().get(0), null);
PdfImage image = PdfImage.fromFile("E-logo.png");
Dimension2D dimension2D = new Dimension();
dimension2D.setSize( 100,100);
doc.getPages().get(0).getCanvas().drawImage(image, new Point2D.Float(40, 200),dimension2D);
figure1.endMarkedContent(doc.getPages().get(0));
PdfStructureElement figure2 = article.appendChildElement(PdfStandardStructTypes.Figure);
//Set Alternate text
figure2.setAlt( "replacement text2");
figure2.beginMarkedContent(doc.getPages().get(0), null);
doc.getPages().get(0).getCanvas().drawRectangle(PdfPens.getBlack(), new Rectangle(300, 200, 100, 100));
figure2.endMarkedContent(doc.getPages().get(0));
//Save to file
String result = "CreateTaggedFile_result.pdf";
doc.saveToFile(result);
doc.close();问题修复:
Spire.Doc for Java 10.12.4 已发布。该版本增强了 Word 到 PDF 的转换。详情请阅读以下内容。
问题修复: