代码改变世界

使用C#和Excel进行报表开发(4)

  观海看云  阅读(122)  评论(0编辑  收藏  举报

内容摘要:在用Excel作报表的时候,可能会碰到分页的情况,这样就要分成多个Sheet显示,如果要在每页都保留表头,就需要将第一页作为模板设计的表头部分拷贝到其他的Sheet上,这时就要用用到Excel中的单元格拷贝。

  在用Excel作报表的时候,可能会碰到分页的情况,这样就要分成多个Sheet显示,如果要在每页都保留表头,就需要将第一页作为模板设计的表头部分拷贝到其他的Sheet上,这时就要用用到Excel中的单元格拷贝。

  下面的代码说明如何一个Sheet上的选定内容拷贝到另一个Sheet上:

  ThisApplication = new Excel.Application();
  ThisWorkbook = ThisApplication.Workbooks.Open("z:Book1.xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
  ThisApplication.DisplayAlerts = false;
  xlSheet = (Excel.Worksheet)ThisWorkbook.Worksheets.get_Item(1);
  Excel.Range range = xlSheet.get_Range("A1", Type.Missing);
  range.Value = "123";
  Excel.Worksheet sheet1 = (Excel.Worksheet)ThisWorkbook.Worksheets.get_Item(2);
  Excel.Range range1 = sheet1.get_Range("B1", Type.Missing);
  range.Copy(range1);
  ThisWorkbook.SaveAs("z:Book2.xls", Type.Missing, Type.Missing,
  Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange,
  Type.Missing, Type.Missing, Type.Missing, Type.Missing);

 

  可以看到,核心的代码是很简单的,就是选定一个源区域,然后指定另一个目标区域,调用源区域的Copy方法将内容整个复制到目标区域,但是你会发现是连单元格的格式等属性一并拷贝过去的,如果要只拷贝单元格中的文本呢?那就要用到windows剪贴板了:

  xlSheet = (Excel.Worksheet)ThisWorkbook.Worksheets.get_Item(1);
  Excel.Range range = xlSheet.get_Range("A1", Type.Missing);
  range.Value = "123";
  System.Windows.Forms.Clipboard.SetDataObject(range.Value.ToString());
  Excel.Worksheet sheet1 = (Excel.Worksheet)ThisWorkbook.Worksheets.get_Item(2);
  Excel.Range range1 = sheet1.get_Range("B1", Type.Missing);
  sheet1.Paste(range1, false);

 

  要注意的是,这种方式只能选一个单元格,复制一个,不能选定一批单元格进行复制。

  上面的例子只给出了主要部分的代码,其他的像销毁Excel进程等操作请参考前面的几篇Excel作报表的随笔。

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
点击右上角即可分享
微信分享提示