我有一个包含N行数据的Excel.Workbook.Worksheet对象。我有一个Excel.Range对象,它包含来自另一个工作表的M行。如何将范围添加到工作表的末尾?
发布于 2013-10-14 14:16:39
您应该能够这样做(没有测试,可能需要稍微调整一下):
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
var application = new Application();
var workbookCopyingFrom = application.Workbooks.Open("a.xlsx");
var workbookCopyingTo = application.Workbooks.Open("b.xlsx");
var worksheetContainingRangeIWantToCopyAcross = workbookCopyingFrom.Sheets[1] as Worksheet;
if (worksheetContainingRangeIWantToCopyAcross != null)
{
var worksheetIWantToCopyToInWorkbookTwo = workbookCopyingTo.Sheets[2] as Worksheet;
if (worksheetIWantToCopyToInWorkbookTwo != null)
{
var usedRangeInWorkbookCopyingTo = worksheetIWantToCopyToInWorkbookTwo.UsedRange;
worksheetContainingRangeIWantToCopyAcross.UsedRange.Insert(XlInsertShiftDirection.xlShiftDown,
usedRangeInWorkbookCopyingTo);
worksheetIWantToCopyToInWorkbookTwo.Rows.Clear();
worksheetIWantToCopyToInWorkbookTwo.Rows.Insert(
CopyOrigin: worksheetContainingRangeIWantToCopyAcross);
}
}
workbookCopyingTo.Save();
workbookCopyingTo.Close();
application.Quit();
Marshal.ReleaseComObject(application);
}
}
}发布于 2013-10-15 20:09:14
假设您知道如何打开这两张纸(如果不知道,请参阅JMK的答案!)你想要的是:
Range src = ...
Range dest = sheet2.Cells(N+1,1);
src.Copy(dest);如果你事先不认识N,你可以这样做
Range dest = wb2.Sheets["Sheet1"].Range("A1").End(XlDirection.xlDown).Offset(1);假设A列中的第一个空白单元格是数据应该放在的位置。(还检查目标表是否为空,或者End()将一直到工作表的底部)
https://stackoverflow.com/questions/19361977
复制相似问题