首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Excel InterOp -将范围添加到工作表的末尾

Excel InterOp -将范围添加到工作表的末尾
EN

Stack Overflow用户
提问于 2013-10-14 13:58:44
回答 2查看 2.5K关注 0票数 1

我有一个包含N行数据的Excel.Workbook.Worksheet对象。我有一个Excel.Range对象,它包含来自另一个工作表的M行。如何将范围添加到工作表的末尾?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-14 14:16:39

您应该能够这样做(没有测试,可能需要稍微调整一下):

代码语言:javascript
复制
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);
        }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2013-10-15 20:09:14

假设您知道如何打开这两张纸(如果不知道,请参阅JMK的答案!)你想要的是:

代码语言:javascript
复制
Range src = ...
Range dest = sheet2.Cells(N+1,1);

src.Copy(dest);

如果你事先不认识N,你可以这样做

代码语言:javascript
复制
Range dest = wb2.Sheets["Sheet1"].Range("A1").End(XlDirection.xlDown).Offset(1);

假设A列中的第一个空白单元格是数据应该放在的位置。(还检查目标表是否为空,或者End()将一直到工作表的底部)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19361977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档