Word控件Spire.Doc 【Table】教程(10): 如何在 C#、VB.NET 中将嵌入式 Excel 工作表转换为 Word 表格

在本文中,您将学习如何在 C#、VB.NET 中使用 Spire.Doc 和 Spire.XLS 将嵌入式 Excel 工作表转换为 Word 表格。

在日常工作中,我们可能会收到Word文档,其中有时会包含嵌入的Excel对象(工作表),我们需要将嵌入的Excel工作表转换为Word表格,以便我们可以方便地更改日期或格式化表格样式。在本文中,您将学习如何在 C#、VB.NET 中使用 Spire.Doc 和 Spire.XLS 将嵌入式 Excel 工作表转换为 Word 表格。

首先,您需要下载 Spire.Office,因为 Spire.Doc 和 Spire.XLS 将在同一个程序中使用。在您的 VS 项目中添加 Spire.Doc.dll 和 Spire.XLS.dll 作为引用。然后按照下面的程序指导完成这项工作。

第一步新建一个Word文档,载入示例文件。从节中获取包含 Excel 对象的段落。初始化一个新的数据表。

Document doc = new Document("Sample.docx", Spire.Doc.FileFormat.Docx2010);Section section = doc.Sections[0];Paragraph para = section.Paragraphs[2];DataTable dt = new DataTable();

第二步遍历段落中的每一个DocumentObject,用IF语句判断DocumentObject是否为OLE对象,用另一个IF语句判断OLE对象类型是否为Excel.Sheet.12。如果是,则通过LoadFromStrem()将 OLE 对象的数据保存到工作簿中。然后将数据从工作表导出到数据表。

foreach (DocumentObject obj in para.ChildObjects){if (DocumentObjectType.OleObject == obj.DocumentObjectType){DocOleObject dObj = obj as DocOleObject;if (dObj.ObjectType == "Excel.Sheet.12"){Workbook wb = new Workbook();wb.LoadFromStream(new MemoryStream(dObj.NativeData));Worksheet ws = wb.Worksheets[0];dt = ws.ExportDataTable(ws.AllocatedRange, false);}}}

第三步:新建一个Word表格,根据datatable的行列设置行号和列号。将数据从数据表导出到 Word 表。

Table table = section.AddTable(true);table.ResetCells(dt.Rows.Count, dt.Columns.Count);for (int i = 0; i < dt.Rows.Count; i++){for (int j = 0; j < dt.Columns.Count; j++){string text = dt.Rows[i][j] as string;table.Rows[i].Cells[j].AddParagraph().AppendText(text);}}

第 四 步:保存文件。

doc.SaveToFile("Result.docx", Spire.Doc.FileFormat.Docx2010);

结果:

如何在 C#、VB.NET 中将嵌入式 Excel 工作表转换为 Word 表格

完整代码

[C#]

using Spire.Doc;using Spire.Doc.Documents;using Spire.Doc.Fields;using Spire.Xls;using System.Data;using System.IO;namespace ApplyTableStyles{class Program{static void Main(string[] args){Document doc = new Document("Sample.docx", Spire.Doc.FileFormat.Docx2010);Section section = doc.Sections[0];Paragraph para = section.Paragraphs[2];DataTable dt = new DataTable();foreach (DocumentObject obj in para.ChildObjects){if (DocumentObjectType.OleObject == obj.DocumentObjectType){DocOleObject dObj = obj as DocOleObject;if (dObj.ObjectType == "Excel.Sheet.12"){Workbook wb = new Workbook();wb.LoadFromStream(new MemoryStream(dObj.NativeData));Worksheet ws = wb.Worksheets[0];dt = ws.ExportDataTable(ws.AllocatedRange, false);}}}Table table = section.AddTable(true);table.ResetCells(dt.Rows.Count, dt.Columns.Count);for (int i = 0; i < dt.Rows.Count; i++){for (int j = 0; j < dt.Columns.Count; j++){string text = dt.Rows[i][j] as string;table.Rows[i].Cells[j].AddParagraph().AppendText(text);}}doc.SaveToFile("Result.docx", Spire.Doc.FileFormat.Docx2010);}}}

[VB.NET]

Imports Spire.DocImports Spire.Doc.DocumentsImports Spire.Doc.FieldsImports Spire.XlsImports System.DataImports System.IONamespace ApplyTableStylesClass ProgramPrivate Shared Sub Main(args As String())Dim doc As New Document("Sample.docx", Spire.Doc.FileFormat.Docx2010)Dim section As Section = doc.Sections(0)Dim para As Paragraph = section.Paragraphs(2)Dim dt As New DataTable()For Each obj As DocumentObject In para.ChildObjectsIf DocumentObjectType.OleObject = obj.DocumentObjectType ThenDim dObj As DocOleObject = TryCast(obj, DocOleObject)If dObj.ObjectType = "Excel.Sheet.12" ThenDim wb As New Workbook()wb.LoadFromStream(New MemoryStream(dObj.NativeData))Dim ws As Worksheet = wb.Worksheets(0)dt = ws.ExportDataTable(ws.AllocatedRange, False)End IfEnd IfNextDim table As Table = section.AddTable(True)table.ResetCells(dt.Rows.Count, dt.Columns.Count)For i As Integer = 0 To dt.Rows.Count - 1For j As Integer = 0 To dt.Columns.Count - 1Dim text As String = TryCast(dt.Rows(i)(j), String)table.Rows(i).Cells(j).AddParagraph().AppendText(text)NextNextdoc.SaveToFile("Result.docx", Spire.Doc.FileFormat.Docx2010)End SubEnd ClassEnd Namespace

以上便是如何在 C#、VB.NET 中将嵌入式 Excel 工作表转换为 Word 表格,如果您有其他问题也可以继续浏览本系列文章,获取相关教程,你还可以给我留言或者加入我们的官方技术交流群。


欢迎下载|体验更多E-iceblue产品

获取更多信息请咨询在线客服  


标签:

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2023年1月27日
下一篇 2023年1月27日

相关推荐

发表回复

登录后才能评论