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

    技术2022-05-11  67

    在用 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 作报表的随笔。    

    最新回复(0)