C# 如何将Excel表格复制到Word中并保留格式

在以前的文章中,我分享了如何使用免费控件将word表格中的数据导入到excel中,在本篇文章中我将介绍如何将Excel表格复制到Word表格中,并同时保留原Excel表格的格式。

这里我们需要使用到一个组件,叫做Spire.Office。它是一个企业级的Office组件,包含了Spire.Doc, Spire XLS, Spire.Spreadsheet,  Spire.Presentation, Spire.PDF, Spire.DataExport, Spire.OfficeViewer, Spire.PDFViewer, Spire.DocViewer和Spire.BarCode等组件,使用它我们可以实现在.NET应用程序中查看、操作、转换及打印Office文档,PDF文档,创建Barcode以及数据导入导出等工作。这里我们需要使用到的是其中的Spire.Doc和Spire.XLS组件。

首先,下载并安装Spire.Office,然后打开Visual Studio,创建项目并引用Spire.Doc.dll和Spire.Xls.dll。以下是我们需要用到的命名空间:

using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using Spire.Xls;

详细步骤如下:

步骤1:从系统加载Excel文件并获取它的第一个工作表。

Workbook workbook = new Workbook();
workbook.LoadFromFile("DatatableSample.xlsx");
Worksheet sheet = workbook.Worksheets[0];

步骤2:创建一个新的Word文档,添加一个表格并设置它的行列数与Excel表格中的行列数一致。

Document doc = new Document();
//添加表格
Table table = doc.AddSection().AddTable(true);
//设置行列数
table.ResetCells(sheet.LastRow, sheet.LastColumn);

步骤3:将Excel表格中的数据写入到word表格里,并调用自定义的方法CopyStyle()将Excel表格中的格式复制到word表格。

for (int r = 1; r <=sheet.LastRow; r++)
{for (int c = 1; c <= sheet.LastColumn; c++){CellRange xCell =sheet.Range[r, c];TableCell wCell =table.Rows[r - 1].Cells[c - 1];//将数据写入到word表格TextRange textRange =wCell.AddParagraph().AppendText(xCell.NumberText);//复制格式到word表格CopyStyle(textRange,xCell, wCell);}
}

自定义的方法CopyStyle( TextRange wTextRange, CellRangexCell, TableCell wCell)如下:

参数:

wTextRange: Word表格中的文本

xCell: Excel表格中的单元格

wCell: Word表格中的单元格

private static void CopyStyle(TextRangewTextRange, CellRange xCell, TableCell wCell)
{//复制字体格式wTextRange.CharacterFormat.TextColor= xCell.Style.Font.Color;wTextRange.CharacterFormat.FontSize= (float)xCell.Style.Font.Size;wTextRange.CharacterFormat.FontName= xCell.Style.Font.FontName;wTextRange.CharacterFormat.Bold= xCell.Style.Font.IsBold;wTextRange.CharacterFormat.Italic= xCell.Style.Font.IsItalic;//复制背景颜色wCell.CellFormat.BackColor= xCell.Style.Color;//复制文本排列方式switch(xCell.HorizontalAlignment){case HorizontalAlignType.Left:wTextRange.OwnerParagraph.Format.HorizontalAlignment= HorizontalAlignment.Left;break;case HorizontalAlignType.Center:wTextRange.OwnerParagraph.Format.HorizontalAlignment= HorizontalAlignment.Center;break;case HorizontalAlignType.Right:wTextRange.OwnerParagraph.Format.HorizontalAlignment= HorizontalAlignment.Right;break;}
}

步骤4:保存文档。

doc.SaveToFile("result.docx",Spire.Doc.FileFormat.Docx);

运行结果:

完整代码:

using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using Spire.Xls;namespace 复制Excel表格到Word并保留格式
{class Program{static void Main(string[] args){//加载Excel文档Workbook workbook = newWorkbook();workbook.LoadFromFile("DatatableSample.xlsx");Worksheet sheet = workbook.Worksheets[0];//创建一个新的word文档Document doc = newDocument();//添加一个表格到word文档Table table = doc.AddSection().AddTable(true);//设置word表格的行列数table.ResetCells(sheet.LastRow, sheet.LastColumn);for (int r = 1; r<= sheet.LastRow; r++){for (intc = 1; c <= sheet.LastColumn; c++){CellRange xCell = sheet.Range[r, c];TableCell wCell = table.Rows[r -1].Cells[c - 1];//将Excel表格中的数据写入到word表格TextRangetextRange = wCell.AddParagraph().AppendText(xCell.NumberText);//将Excel表格中的格式复制到word表格CopyStyle(textRange, xCell, wCell);}}//设置word表格的列宽for (int i = 0; i< table.Rows.Count; i++){for (intj = 0; j < table.Rows[i].Cells.Count; j++){table.Rows[i].Cells[j].Width = 60f;}}//保存文档并打开doc.SaveToFile("result.docx",Spire.Doc.FileFormat.Docx);System.Diagnostics.Process.Start("result.docx");}private static void CopyStyle(TextRangewTextRange, CellRange xCell, TableCell wCell){//复制Excel单元格的字体格式到word表格wTextRange.CharacterFormat.TextColor = xCell.Style.Font.Color;wTextRange.CharacterFormat.FontSize = (float)xCell.Style.Font.Size;wTextRange.CharacterFormat.FontName = xCell.Style.Font.FontName;wTextRange.CharacterFormat.Bold = xCell.Style.Font.IsBold;wTextRange.CharacterFormat.Italic = xCell.Style.Font.IsItalic;//复制Excel单元格的背景颜色到word表格wCell.CellFormat.BackColor =xCell.Style.Color;//复制Excel单元格的字体排列方式到word表格switch (xCell.HorizontalAlignment){case HorizontalAlignType.Left:wTextRange.OwnerParagraph.Format.HorizontalAlignment = HorizontalAlignment.Left;break;case HorizontalAlignType.Center:wTextRange.OwnerParagraph.Format.HorizontalAlignment = HorizontalAlignment.Center;break;case HorizontalAlignType.Right:wTextRange.OwnerParagraph.Format.HorizontalAlignment = HorizontalAlignment.Right;break;}}}
}

C# 如何将Excel表格复制到Word中并保留格式相关推荐

  1. 将Excel表格复制到Word中

    早上帮老板做文档,要把一个Excel表格贴到Word中做展示. 直接复制贴进来吧,表格大小和word不匹配.截图贴进来吧,表之大,一张截不下,最后通过万能的度娘找了一个完美粘贴表格的方案~ 第一步: ...

  2. Word:Excel表格复制到Word中超出边界

    问题 Excel表格 将该Excel表格插入Word中,可能会出现显示不全的问题,如下图所示. 法1. 修改显示方式 注意:该方法仅用于阅读而让表格显示完整. 具体包括两种方法: 在顶部的菜单栏中,点 ...

  3. Excel表格复制到word中

    经常会遇到这样的情况,需要在word漂亮的显示excel中的表格,但是直接复制调整难度比较大. 我们可以先在Word中插入等同列和等同行. 然后选中这个表格,根据word中的设计,设计一个拉风的表格. ...

  4. Excel表格转到Word中,保持表格不变形,不超边缘纸张范围

    Excel表格转到Word中,保持表格不变形,不超边缘纸张范围 目录 Excel表格转到Word中,表格不超边缘纸张范围 1.Excel表格复制到Word中,边缘竟然超出了纸张范围怎么办? 2.选中E ...

  5. Excel表格拖入Word中表格格式保持不变

    一.Excel表格拖入Word中表格格式保持不变 1.选中Excel中的表格,按住Ctrl键,拖动到word中即可. 二.word中的表格复制到Excel中表格格式保持不变 1.将word另存为网页格 ...

  6. excel 表格复制到word后,宽超出word如何调整?

    网上很多方法是用"选择性粘贴----excel表格对象",这个适用表格行数少的,不超过一页word的. 步骤 复制到word里后,选中表格,右键---自动调整--选择具体的调整方式 ...

  7. python 把Excel表格复制到Word保持格式不变

    以往企业在写年报报表的时候,都需要现在Excel表格中汇总好多数据表格,如何再把每个表格区域复制粘贴到Word当中,最后再把Word转换成PDF公布在各大需求平台,那该如何实现呢? 下面我们拭目以待~ ...

  8. 如何把Excel表格转到Word,并保持格式不变?

    转自:http://www.pinlue.com/article/2021/03/1503/1711560197548.html

  9. 怎么把excel表格转换成word格式

    工作中难免会有需要将Excel表格转换成Word文档的时候,可能大多数人的做法是直接将excel表格复制到word里,可是粘到Word后表的格式全变了,还得重新进行调整格式,这也太麻烦了,所以今天小编 ...

  10. 怎么把html表复制到word里,怎么把网页表格复制到word

    在互联网时代我们经常要在网页中找资料,文字进行复制粘贴调整格式还好,但是有时网页中的表格复制到Word中,表格的边框线全没了,怎么办呢?那么下面就由学习啦小编给大家分享下把网页表格复制到word的技巧 ...

最新文章

  1. 计网链路层mac地址和ip地址缺一不可
  2. 【枭·音频】感同声受——《暗影火炬城》PS5 HD震动制作
  3. ElementUI分页组件的封装
  4. Android Studio开发基础之自定义View组件
  5. 乱码 设置界面_和平精英:压轴更新后BUG频出,设置界面崩盘,界面全白变乱码...
  6. asterisk for mipsel
  7. 递归算法思路以及题目总结(未完待续...)
  8. Mybatis 动态传入表名 字段名 的解决办法
  9. linux shell mysql版本,Linux中Shell操作MySQL
  10. Java操作MongoDB(聚合函数)向Mongo插入及查询数据
  11. Xshell 4登录脚本
  12. 【色彩管理】CMYK色彩模式详解
  13. 电子签章系统如何无代码接入第三方应用
  14. 解析 FBX 模型文件作为 Direct3D 的渲染模型
  15. GIMP 2.10.24 图片切片
  16. 飞机大战源码php,飞机大战源码 - 丁小未的个人页面 - OSCHINA - 中文开源技术交流社区...
  17. 背篼酥课堂第八课--APP开发--app图形化编程
  18. 一道简简单单的字节跳动算法面试题
  19. gettimeofday() 和 clock_gettime()函数 分析小结
  20. allure报告中去掉allure.title中自动拼接的参数

热门文章

  1. 【不误正业】win10透明任务栏,任务栏居中+桌面美化工具DeskGo
  2. python支持arcpy的版本_ArcPy开发IDE
  3. matlab qpsk调制 函数,MATLAB_QPSK调制与解调
  4. hive与mysql对比之max、group by、日志分析
  5. vex编程语言是基于c语言,vex机器人编程软件 vex机器人大赛
  6. 东芝打印机共享怎么设置_东芝2303am网络打印设置教程
  7. idea快捷键失效,快捷键不能用
  8. 交换机Vlan中 tagged和untagged的区别
  9. java的ascii码表_ASCII码表对照
  10. 软件质量保障之代码走查