使用C#和Excel进行报表开发(四)-复制单元格

转载 2007年09月30日 10:05:00
在用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作报表的随笔。
 
 

excel C# 报表制作汇总

1. 单击“添加引用”对话框的“COM”选项卡,找到“Microsoft Excel 11 Object Library”,按“确定”。 注意:Microsoft Excel 11 Object L...
  • zzy7075
  • zzy7075
  • 2016年08月03日 10:23
  • 1090

如何对合并单元格进行筛选

阅读之前,建议你先阅读前面介绍的BOSS技能《※ 如何往合并单元格的空单元格里写入数据》   上面提及的BOSS技能,你读过了吗? 如果读过,那你应该明白,如果要筛选,那只需要往合并区域里写入空白的...
  • u013465749
  • u013465749
  • 2014年01月14日 14:20
  • 2192

C#合并excel单元格,操作合并后的单元格 (winform导出excel)

我想合并excel单元格,但不光是行合并,或是列合并,而是其中既包含行合并又包含列合并(就是把列合并的单元格再行合并,反过来也是),比如我想把前三行合并成一个单元格怎么办?(前三行已经是列合并后的单元...
  • xwnxwn
  • xwnxwn
  • 2016年02月04日 10:49
  • 2529

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

在以前的文章中,我分享了如何使用免费控件将word表格中的数据导入到excel中,在本篇文章中我将介绍如何将Excel表格复制到Word表格中,并同时保留原Excel表格的格式。...
  • Eiceblue
  • Eiceblue
  • 2016年12月20日 14:54
  • 2314

c# 操作Excel单元格属性

range.NumberFormatLocal = "@";     //设置单元格格式为文本 range = (Range)worksheet.get_Range("A1", "E1");    ...
  • u010034670
  • u010034670
  • 2013年11月28日 15:29
  • 1653

C#读取写入excel单元格

c# 读取写入excel单元格(包括对excel的一些基本操作) 以下是一些对excel的一些基本操作 1:工程对excel类库的导入,如:c:\program files\M...
  • u010763324
  • u010763324
  • 2016年08月05日 13:40
  • 321

java如何生成excel报表--jxl.jar操作

文章参考:http://www.cnblogs.com/mingforyou/archive/2013/08/26/3282922.html JAVA EXCEL API:是一开放源码项目,通过它...
  • qingfengmuzhu1993
  • qingfengmuzhu1993
  • 2017年02月25日 11:38
  • 731

C#操作Excel的OLEDB方式与COM方式比较

在对Excel进行读写操作时,使用微软自身提供的解决方案,有两种,分别是OLEDB方式和调用COM组件的方式 1. OLEDB方式 用这种方法读取Excel速度相对调用COM组件来讲是非常的快的,...
  • sundacheng1989
  • sundacheng1989
  • 2013年03月14日 15:45
  • 5017

C# 获取Excel的指定单元格的值

获取Excel的指定单元格的值
  • lqh4188
  • lqh4188
  • 2016年12月17日 09:44
  • 5700

C# Excel 行高,列宽,合并单元格,单元格边框线,冻结

private _Workbook _workBook = null; private Worksheet _workSheet = null; private Excel.Application _...
  • onlyzkg
  • onlyzkg
  • 2014年11月27日 14:40
  • 1509
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用C#和Excel进行报表开发(四)-复制单元格
举报原因:
原因补充:

(最多只允许输入30个字)