复制excel中的指定行至另一excel文档

本文介绍了一种使用 C# 和 Microsoft Office Interop Excel 库实现的数据迁移方法。该方法能从一个Excel文件中根据指定条件选择数据,并复制到另一个Excel文件中指定的位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文引用的类库为 using Microsoft.Office.Interop.Excel;

直接上代码

            // 下面为excel操作
            string dianHao = "d003";
            string dianHao2 = "d005";
            List<string> lst = new List<string>();
            lst.Add(dianHao);
            lst.Add(dianHao2);
            Dictionary<string, string> kzdIndex = new Dictionary<string, string>();            
            Application excel = new Application();
            Workbook wb1 = excel.Workbooks.Open("D:\\a.xlsx");
            Workbook wb2 = excel.Workbooks.Open("D:\\b.xlsx");
            //取得第一个工作薄
            Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)wb1.Worksheets.get_Item(1);
            //取得总记录行数    (包括标题列)
            int rowsint = ws.UsedRange.Cells.Rows.Count; //得到行数
            Range dataRange = null;
            string sheetSelectRow = "";
            string sheetCopyToTargetRow = "";
            int startIndex = 6;
            for (int i = 0; i < lst.Count; i++)
            {
                for (int row = 6; row <= rowsint; row++)
                {
                    dataRange = (Range)ws.Cells[row, 2];
                    if (dataRange.Value2 != null && dataRange.Value2.ToString()==lst[i] && i!=lst.Count-1)
                    {
                        kzdIndex.Add(lst[i],row.ToString());
                        sheetSelectRow += "A" + row + ":" + "H" + row + ",";
                        sheetCopyToTargetRow += "A" + startIndex + ":" + "H" + startIndex + ",";
                    }
                    if (dataRange.Value2 != null && dataRange.Value2.ToString() == lst[i] && i == lst.Count - 1)
                    {
                        kzdIndex.Add(lst[i], row.ToString());
                        sheetSelectRow += "A" + row + ":" + "H" + row;
                        sheetCopyToTargetRow += "A" + startIndex + ":" + "H" + startIndex;
                    }
                }
                startIndex++;
            }

            Range src = wb1.Sheets["Sheet1"].Range(sheetSelectRow);

            Range dest = wb2.Sheets["Sheet1"].Range("A6:H6");

            src.Copy(dest);
            wb2.SaveCopyAs("D:\\其它文档\\result2.xlsx");
            //wb2.Save();
            wb1.Close(false);
            wb2.Close(false);// false为不保存更改
            // 下面五行代码为释放内存
            System.Runtime.InteropServices.Marshal.ReleaseComObject(ws);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(wb1);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(wb2);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
            GC.Collect();

 wb1.Sheets["Sheet1"].Range()中的参数为宏语言(A6:H6,A7:H7),可参考访api

Range 接口 (Microsoft.Office.Interop.Excel) | Microsoft Docs

关键代码为下面几行:


Microsoft.Office.Interop.Excel.Range src = wb1.Sheets["Sheet1"].Range(sheetSelectRow);
Microsoft.Office.Interop.Excel.Range dest = wb2.Sheets["Sheet1"].Range("A6:H6");
src.Copy(dest);
wb2.SaveCopyAs("D:\\其它文档\\result2.xlsx");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值