Word控件Spire.Doc 【Table】教程(10): 如何在 C#、VB.NET 中将嵌入式 Excel 工作表转换为 Word 表格
Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转换和打印Word/PDF/Excel等格式文件处理,小巧便捷。
Spire.Doc for.NET 最新下载(qun:767755948)https://www.evget.com/product/3368/download
在日常工作中,我们可能会收到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 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.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 NextDim 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 Nextdoc.SaveToFile("Result.docx", Spire.Doc.FileFormat.Docx2010) End Sub End Class End Namespace
以上便是如何在 C#、VB.NET 中将嵌入式 Excel 工作表转换为 Word 表格,如果您有其他问题也可以继续浏览本系列文章,获取相关教程,你还可以给我留言或者加入我们的官方技术交流群。
Word控件Spire.Doc 【Table】教程(10): 如何在 C#、VB.NET 中将嵌入式 Excel 工作表转换为 Word 表格相关推荐
- Word控件Spire.Doc 转换教程(六):如何将 XML 转换为 Word
为什么使用 C#/VB.NET 将 Office OpenXML 转换为 Word? 作为一种出色的编程语言,Office OpenXML 在其自然形式下很难导航和访问.将文件从 Office Ope ...
- Word控件Spire.Doc 转换教程(十二):如何将 Word 转换为 EPub、XPS、Emf
本文将介绍一种通过名为 Spire.Doc 的强大且独立的Word .NET 组件将 Word 转换为 EPub.XPS.Emf的简单方法,无需在机器上安装 Microsoft Word.它还支持将 ...
- Word控件Spire.Doc 转换教程(十八): 将 RTF 转换为图像并重置图像分辨率
Spire.Doc具有在 C# 和 VB.NET 中操作 RTF 文件格式的强大能力.通过使用 Spire.Doc,开发人员可以将 RTF 转换为 PDF.HTML和 .doc..docx 格式的 w ...
- Word控件Spire.Doc 转换教程(二十三):保留或禁用从 Word 到 PDF 转换的超链接
超链接为读者提供了更多的附加信息,它被广泛用于我们的 word 文档.Spire.Doc 具有强大的超链接文字元素操作功能.开发者可以在word文档中添加.修改和删除超链接.Spire.Doc for ...
- Word控件Spire.Doc 转换教程(十一):如何将 HTML 转换为图像
Spire.Doc 可以帮助用户使用 C#/VB.NET 将HTML 转换为 Image.该解决方案使用户可以随时随地通过手机.MP4播放器.PSP.iPad.iTouch等便携式设备阅读HTML.按 ...
- Word控件Spire.Doc 转换教程(七):如何将 Word 转换为 RTF
为什么要将 Word 转换为 RTF? 自 1990 年代以来,Microsoft 开始为其一系列专有的文字处理格式使用 .doc 扩展名.Doc 格式通常与 Microsoft Office 应用程 ...
- Word控件Spire.Doc 转换教程(二十八):将 Word 转换为 PCL
PCL 文件是以打印机命令语言(通常称为 PCL)页面描述语言创建的数字打印文档.从v7.1.19 开始,Spire.Doc 支持将 word 文档转换为 PCL.PCL文件的标准有很多种:这里的 P ...
- Word控件Spire.Doc 转换教程(二十五):在 C#、VB.NET 中将 ODT 转换为 DOC
具有 .ODT 文件扩展名的文件是 OpenDocument 文本文档文件.这些文件通常由免费的 OpenOffice Writer 文字处理器程序创建.ODT 文件类似于与 Microsoft Wo ...
- Word控件Spire.Doc 转换教程(二十六):在 C#、VB.NET 中将 Word 转换为 EPUB 时添加封面图片
我们之前介绍如何将 Word 转换为 EPUB的文档.但是,在从 Word 文档创建 EPUB 图书时,您可能希望将封面图像添加到 EPUB.以下代码片段将演示相同的内容. Spire.Doc for ...
最新文章
- oracle grant 权限
- 百度:I am from China, wait, am I?
- python怎么字体加阴影_如何添加阴影到tkinter帧?
- 回顾我学过的编程语言
- linux c调用wcf服务,Silverlight+WCF实现跨域调用
- 关于Newtonsoft.Json,LINQ to JSON的一个小demo
- 修改MySQL自动递增值
- 将m文件通过matlab 的编译器转换为可执行文件,【转】 Matlab中提高m文件执行效率的小技巧...
- 安卓相机如何设置对焦模式
- oracle查询functions名字,oracle 怎样查看已经存在的函数,过程?
- 拓展——Microsoft Office Visio下载
- 联想Y50更换固态硬盘
- Qt获取本地ip地址
- 如何使用SiteSucker下载HTML源文件?下载html源文件的两种方法
- 【Linux基础】Linux简史
- 关于720p和1080p观看距离和效果
- PHP/MySQL教程
- 人和人最大的差别不是技术上的高低,而是你的人生观价值观
- Hive数据仓库实战
- 什么是Python之禅?
热门文章
- 手机android的文件怎么恢复,如何恢复安卓手机内置存储中已删除的文件
- 解决HttpClient::setHeader() must be of the type string, null given
- 用JAVA语言写一个计算员工月工资的程序
- Android添加快捷方式(Short)到手机桌面
- 直击智能语音行业痛点,腾讯云小微云函数助力AI语音落地
- 2023年HCIA-Cloud Service V3.0 H13-811(最新考试题库200题)
- 用笔记本编程,强烈建议外接一个大屏幕显示器!(最好用HDMI接口)
- [附源码]计算机毕业设计JAVA二手车交易系统
- 通过wireshark抓取Lookback数据包
- SVT | Street View Text Dataset | Chars74K dataset | 带文本的街景 OCR 数据集