使用C# 将Excel1 中sheet1 的数据复制粘贴到Excel2中的sheet2

最近在项目中有这个需求, 在网上找的资料哦也有限 。

最开始想的是用openxmlsdk  只能在同一个Excel表中数据复制!

1、使用openxml sdk 复制Excel 中Sheet1 的数据到sheet2;

 1  /// <summary>
 2         ///使用openxmlsdk 转换数据 原理是通过CloneNode克隆  目前只完成同表之间的全部复制!
 3         /// </summary>
 4         /// <param name="path">Excel路径</param>
 5         /// <param name="sheet1"></param>
 6         /// <param name="sheet2"></param>
 7         public static void Dome2(string path1, string sheet1, string sheet2)
 8         {
 9             SpreadsheetDocument document1 = SpreadsheetDocument.Open(path1, false);
10
11             Sheet sheet2 = document1 .WorkbookPart.Workbook.Descendants<Sheet>().Where(p => p.Name == sheet2).First();
12             WorksheetPart worksheet2 = (WorksheetPart)document1 .WorkbookPart.GetPartById(sheet2.Id);
13
14             ////查找目标模版Sheet 页
15             WorksheetPart sourceWorksheetPart = SpreadsheetReader.GetWorksheetPartByName(document1, sheet1);
16
17             //通过深拷贝的方式直接拷贝目标模版的数据格式部分的 XML。
18             worksheet2.Worksheet = (Worksheet)sourceWorksheetPart.Worksheet.CloneNode(true);
19
20             worksheet2.Worksheet.Save();
21             sourceWorksheetPart.Worksheet.Save();
22
23         }

2、使用vs 自带的Excel插件完成 两表之间的数据转换

 1  /// <summary>
 2         ///
 3         /// </summary>
 4         /// <param name="filepath"></param>
 5         /// <param name="filepath2"></param>
 6         public static void Dome(string filepath, string filepath2)
 7         {
 8             //
 9             Excel1.Application excel = new Excel1.Application();
10             excel.Visible = false;
11             excel.DisplayAlerts = false;
12             //打开Excel1
13             Excel1.Workbook workbook = excel.Workbooks._Open(filepath, Missing.Value, Missing.Value, Missing.Value, Missing.Value
14                 , Missing.Value, Missing.Value, Missing.Value, Missing.Value
15                 , Missing.Value, Missing.Value, Missing.Value, Missing.Value);
16             //打开Excel2
17             Excel1.Workbook workbook2 = excel.Workbooks._Open(filepath2, Missing.Value, Missing.Value, Missing.Value, Missing.Value
18               , Missing.Value, Missing.Value, Missing.Value, Missing.Value
19               , Missing.Value, Missing.Value, Missing.Value, Missing.Value);
20
21             //
22             Excel1.Worksheet worksheet1 = (Excel1.Worksheet)workbook.Worksheets[1];
23             Excel1.Worksheet worksheet2 = (Excel1.Worksheet)workbook2.Worksheets[1];
24          //
25             Excel.Range range = worksheet1 .Cells;
26             range1.Copy(Missing.Value);
27             worksheet2 .Paste(Missing.Value, Missing.Value);
28
29             workbook1.Save();
30             workbook2.Save();
31         }            

3、 完成Excel1中Sheet1 指定位置数据 复制到Excel2中Sheet2 指定位置;

 1 public static void Dome(string filepath, string filepath2, string rangeReference)
 2         {
 3             //
 4             Range range = new Range(rangeReference);
 5             Excel1.Application excel = new Excel1.Application();
 6             excel.Visible = false;
 7             excel.DisplayAlerts = false;
 8             //
 9             Excel1.Workbook workbook1 = excel.Workbooks._Open(filepath, Missing.Value, Missing.Value, Missing.Value, Missing.Value
10                 , Missing.Value, Missing.Value, Missing.Value, Missing.Value
11                 , Missing.Value, Missing.Value, Missing.Value, Missing.Value);
12
13             Excel1.Workbook workbook2 = excel.Workbooks._Open(filepath2, Missing.Value, Missing.Value, Missing.Value, Missing.Value
14               , Missing.Value, Missing.Value, Missing.Value, Missing.Value
15               , Missing.Value, Missing.Value, Missing.Value, Missing.Value);
16
17             //
18             Excel1.Worksheet worksheet1 = (Excel1.Worksheet)workbook.Worksheets[1];
19             Excel1.Worksheet worksheet2 = (Excel1.Worksheet)workbook2.Worksheets[1];
20
21             //sheet1位置
22             Excel1.Range range1 = worksheet.Range[worksheet.Cells[range.StartRow, range.StartCol], worksheet.Cells[range.EndRow, range.EndCol]];
23             //sheet2位置
24             Excel1.Range range2 = worksheet1.Range[worksheet1.Cells[range.StartRow, range.StartCol], worksheet1.Cells[range.EndRow, range.EndCol]];
25
26             range1.Copy(Missing.Value);
27             worksheet2.Paste(range2, false);
28
29             workbook2.Save();
30             workbook1.Save();
31         }            
时间: 2024-10-01 00:53:54

使用C# 将Excel1 中sheet1 的数据复制粘贴到Excel2中的sheet2的相关文章

MySQL将表a中查询的数据插入到表b中

MySQL将表a中查询的数据插入到表b中 如果表b存在 insert into b select * from a; 如果表b不存在 create table b as select * from a; 扩展: 将b表中的某写字段值插入到a表中 insert into a (userID,userName) select b.userID,b.userName from tr_ajax_chat_messages; 将a表和b表userID相等的值保存到a表 update a set a.use

[FMX]在你的跨平台应用中使用剪贴板进行复制粘贴

[FMX]在你的跨平台应用中使用剪贴板进行复制粘贴 2017-08-10 ? Android.C++ Builder.Delphi.iOS.教程 ? 暂无评论 ? swish ?浏览 516 次 VCL 中如何使用剪贴板咱就不说了,FMX 做为一个新的框架,提供了跨平台的剪贴板支持.FMX 对剪贴板的支持来自两个接口: IFMXClipboardService:位于 FMX.Platform.pas 中 1 2 3 4 5 6 7 8 9 10 11 IFMXClipboardService =

在你的跨平台应用中使用剪贴板进行复制粘贴

[FMX]在你的跨平台应用中使用剪贴板进行复制粘贴 2017-08-10 ? Android.C++ Builder.Delphi.iOS.教程 ? 暂无评论 ? swish ?浏览 681 次 VCL 中如何使用剪贴板咱就不说了,FMX 做为一个新的框架,提供了跨平台的剪贴板支持.FMX 对剪贴板的支持来自两个接口: IFMXClipboardService:位于 FMX.Platform.pas 中 1 2 3 4 5 6 7 8 9 10 11 IFMXClipboardService =

关于把A表中的数据复制到B表中(整理)

如果A,B两个表中没有重复数据且表结构一样可以直接 insert into B select * from A 如果结构不一样可以 insert into B(字段列表),select 字段列表 from A 如果A,B两表中有重复数据可以 insert into B(字段列表),select 字段列表 from A  where not exists(select * from B where a.keycol1 = b.keycol1) 以前做过把数据插入到临时表,所以我按照这个思路试了试.

vue中什么样的数据可以是在视图中显示

1. Vue中不可以添加不存在的属性,因为不存在的属性是没有getter和setter的. <div id="app"> {{msg.a}} {{msg.b}} </div> <script src="js/vue.js"></script> <script> let vm = new Vue({ el: "#app", data: { msg: { a: 1 } } }) vm.msg

解决Fedora中由于clipit导致复制/粘贴无法使用问题

在Fedora中clipit用于剪贴板管理使用之后,爱不释手. 但是,最进发现由于clipit导致复制/粘贴无法使用问题. 卸载了clipit就可以,正常在桌面使用复制/粘贴 若是要继续使用clipit 可以使用https://github.com/rainsome/myutils/blob/master/clipitrc 替换 ~/.config/clipit/clipitrc 文件 重启clipit既可以正常使用复制/粘贴 原文地址:http://blog.51cto.com/200355/

如何在AJAX的毁掉函数中传递JSON数据?如何在控制器中接受并转换成数组?

首先,我们经过测试(或者你平时的开发经验)知道,在AJAX的回调函数中使用get或者post方式可以传递字符串(不信可以自己去写实例测试,不过要注意:get方式有数据量的限制): 方法一:我们将ajax的请求放回的JSON数组转换成字符串,然后在回调函数中get过去: a.html页面的AJAX请求代码: b.后台两个处理函数(尤其注意第二个是回调函数指向的处理函数): 方法二:我们在回调函数中直接处理发送一个新的AJAX请求(也可以写成匿名函数),将ajax请回来的JSON数组转化为字符串作为

Winserver2008r2 64位系统上将oracle11g中表格及数据定时同步到sqlserver2005中

:

delphi edit 中undo 和clearundo 复制粘贴等总结

edit 和memo都有undo功能, Undo:恢复到改动前. ClearUndo:撤销掉Undo缓冲区的内容,则将无法恢复到改动前的 从该文本框的撤销缓冲区中清除关于最近操作的信息,根据应用 程序的状态,可以使用此方法防止重复执行撤销操作.调用的一般格式如下: 文本框对象.ClearUndo()该方法无参数. 撤销编辑框所选内容删除写法: edt1.Undo; 彻底删除无法撤销的写法: edt1.ClearSelection;edt1.ClearUndo; 删除选择的内容: edt1.Cle