【问题标题】:How to copy a formatted cell in Excel to a table cell in Word using .NET?如何使用 .NET 将 Excel 中的格式化单元格复制到 Word 中的表格单元格?
【发布时间】:2010-04-20 01:46:07
【问题描述】:
我正在尝试将 Excel 2003(或 2007)电子表格中的单元格一次复制到 Word 2003(或 2007)表格中。我希望代码与版本无关,因此我使用后期绑定。需要保留 Excel 单元格内容的格式,例如颜色、下划线、删除线。我的方法是使用 Word 文档作为模板。它的顶部有一个表格,我可以将其复制到文档的末尾,根据需要添加行,并使用 Excel 电子表格中的数据填写单词表格单元格。不幸的是,所有格式都消失了。我得到的只是文本本身。
【问题讨论】:
标签:
c#
vb.net
excel
ms-word
【解决方案1】:
想通了。结果比预期的要容易。
Dim appExcel As Excel.Application
Dim thisWorkbook As Excel.Workbook
Dim thisWorksheet As Excel.Worksheet
appExcel = CType(CreateObject("Excel.Application"), Excel.Application)
thisWorkbook = appExcel.Workbooks.Open("Excelfilename.xls")
thisWorksheet = CType(thisWorkbook.ActiveSheet, Excel.Worksheet)
Dim appWord As Word.Application
Dim thisDoc As Word.Document
Dim thisWordTable As Word.Table
' Use a template word doc that has a table in it.
appWord = CType(CreateObject("Word.Application"), Word.Application)
thisDoc = appWord.Documents.OpenNoRepairDialog("templateWordFileName.doc")
thisDoc.SaveAs("outputDocFileName.doc")
' Get a reference to the table.
thisWordTable = thisDoc.Tables(0)
' Copy data from excel to this table.
CType(thisWorksheet.Cells(5, 1), Excel.Range).Copy()
thisWordTable.Cell(1, 2).Select()
appWord.Selection.Paste()
thisDoc.Save()
thisDoc.Close()
appWord.Quit()
thisWorkbook.Close(False) ' Don't save any changes to workbook.
appExcel.Quit()
【解决方案2】:
您可能必须先完成文本,然后手动复制样式。您可以使用 Workbook.Styles 获取 Microsoft.Office.Interop.Excel.Style 的集合,然后应该能够使用该数据创建 Microsoft.Office.Interop.Word.Styles。