1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Word控件Spire.Doc 【Table】教程(10): 如何在 C# VB.NET 中将嵌入式 Excel 工作表转换为 Word 表格

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

时间:2021-04-14 22:06:39

相关推荐

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

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转换和打印Word/PDF/Excel等格式文件处理,小巧便捷。

Spire.Doc 最新下载(qun:767755948)/product/3368/download

在日常工作中,我们可能会收到Word文档,其中有时会包含嵌入的Excel对象(工作表),我们需要将嵌入的Excel工作表转换为Word表格,以便我们可以方便地更改日期或格式化表格样式。在本文中,您将学习如何在 C#、 中使用 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.Docx);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.Docx);

结果:

完整代码

[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.Docx);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.Docx);}}}

[]

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.Docx)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.Docx)End SubEnd ClassEnd Namespace

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。