如何将sheet1中的数据移动到excel中的sheet2

我通过C#将内容写入Excel文件。 我在Excel中有4列和许多行。 当应用程序运行时,我需要检查数据是否存在于sheet1中,然后它应该被移动到sheet2。 如果sheet2也包含数据,则应该附加sheet2数据。 我正在使用interop dll访问excel。 我已经完成了写内容,但我怎样才能以编程方式移动它? 这是我的尝试。

Excel.Workbook xlwb; Excel.Application excelApp = new Excel.Application(); Excel.Worksheet xlssheet1; Excel.Worksheet xlssheet2; xlwb = excelApp.Workbooks.Open(myPath, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing); int rowIndex = 2; int colIndex = 1; if (excelApp.Cells[rowIndex, colIndex] != null) { xlssheet1 = (Worksheet)xlwb.Worksheets[1]; xlssheet2 = (Worksheet)xlwb.Worksheets[2]; xlwb.Sheets.Move(System.Reflection.Missing.Value, xlssheet2); xlwb.Save(); } 

首先我要定义一个函数来找出最后一个工作表的使用行:

 private int LastUsedRow(Excel.Worksheet aSheet) { object hmissing = System.Reflection.Missing.Value; string usedAddress = aSheet.UsedRange.get_Address(hmissing, hmissing, Excel.XlReferenceStyle.xlA1, hmissing, hmissing); return int.Parse(usedAddress.Substring(usedAddress.LastIndexOf('$') + 1)); } 

然后你的代码就可以通过这种方式迭代地将单元格从一个工作表复制到另一个工作表中:

 Excel.Workbook xlwb; Excel.Application excelApp = new Excel.Application(); Excel.Worksheet xlssheet1; Excel.Worksheet xlssheet2; xlwb = excelApp.Workbooks.Open(myPath, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing, objMissing); xlssheet1 = (Worksheet)xlwb.Worksheets[1]; xlssheet2 = (Worksheet)xlwb.Worksheets[2]; int lastRow1 = LastUsedRow(xlssheet1); int lastRow2 = LastUsedRow(xlssheet2); int curRow = lastRow2 + 1; for (int i = 1; i <= lastRow1; i++) { object toCopy = xlsheet1.getRange("A"+i, "D" + i).get_Value(null); xlsheet2.getRange("A"+curRow, "D" + curRow).set_Value(null, toCopy); curRow++; } xlwb.Save(); 

如果您找不到“移动”数据的方法,请手动移动它:

  1. 复制这些值
  2. 确保副本工作
  3. 使原始单元格空白
  4. 保存