翻譯|使用教程|編輯:胡濤|2023-01-30 10:00:24.197|閱讀 326 次
概述:在本文中,您將學習如何在 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@fc6vip.cn