本文引用的类库为 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");