提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:胡涛|2023-01-30 10:00:24.197|阅读 252 次
概述:在本文中,您将学习如何在 C#、VB.NET 中使用 Spire.Doc 和 Spire.XLS 将嵌入式 Excel 工作表转换为 Word 表格。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转换和打印Word/PDF/Excel等格式文件处理,小巧便捷。
在日常工作中,我们可能会收到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#]
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.Doc Imports Spire.Doc.Documents Imports Spire.Doc.Fields Imports Spire.Xls Imports System.Data Imports System.IO Namespace ApplyTableStyles Class Program Private 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.ChildObjects If DocumentObjectType.OleObject = obj.DocumentObjectType Then Dim dObj As DocOleObject = TryCast(obj, DocOleObject) If dObj.ObjectType = "Excel.Sheet.12" Then Dim wb As New Workbook() wb.LoadFromStream(New MemoryStream(dObj.NativeData)) Dim ws As Worksheet = wb.Worksheets(0) dt = ws.ExportDataTable(ws.AllocatedRange, False) End If End If Next Dim table As Table = section.AddTable(True) table.ResetCells(dt.Rows.Count, dt.Columns.Count) For i As Integer = 0 To dt.Rows.Count - 1 For j As Integer = 0 To dt.Columns.Count - 1 Dim text As String = TryCast(dt.Rows(i)(j), String) table.Rows(i).Cells(j).AddParagraph().AppendText(text) Next Next doc.SaveToFile("Result.docx", Spire.Doc.FileFormat.Docx2010) End Sub End Class End Namespace
以上便是如何在 C#、VB.NET 中将嵌入式 Excel 工作表转换为 Word 表格,如果您有其他问题也可以继续浏览本系列文章,获取相关教程,你还可以给我留言或者加入我们的官方技术交流群。
欢迎下载|体验更多E-iceblue产品
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
专业的.NET Office套件,涵盖office文档创建、编辑、转换、管理和OCR内容识别等操作
Spire.Doc for .NETSpire.Doc for .NET 是一款专门对 Word 文档进行操作的 .NET 类库。
Spire.XLS for .NETSpire.XLS for .NET是专业.NET Excel组件,快速完成对Excel各类编程操作
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢