从工作表中选择并复制页面范围

时间:2016-06-03 10:13:30

标签: c# .net excel excel-interop

如何根据"页面"选择范围?在"分页视图中定义的边框"在excel?

我有一个.xlsx,其工作表有6个区域定义"页面" (可能被称为打印区域?)。根据SQL表中包含的数据,我打算执行一些算术并将数据值输入到工作表中,并根据数字类别,需要复制特定的" Page"范围。

这是一份关于费用预算的法庭文件,名为" Precedent H"可从justice.gov.uk获取,网址如下:

https://www.justice.gov.uk/downloads/courts/cpr/precedent-h-april-2016.xlsx

我希望以编程方式在第一张工作表上复制两个或有成本类别,其中预算有多个或有成本类别(或有成本A / B / C / D /等)。我使用Microsoft.Office.Interop.Excel.ApplicationClass()来访问/打开文档,然后使用Range.Find和Range.Offset的组合来分配值。我玩过使用UsedRange,然后使用split函数获取最后一个单元格,然后使用偏移量向后计数以获取页面中的第一个单元格,但我想知道是否有更简单的方法来获取范围?

1 个答案:

答案 0 :(得分:0)

找到一个可以获得特定范围的工作解决方案:

Range rngTo = wsBreakdown.Cells.SpecialCells(XlCellType.xlCellTypeLastCell, Type.Missing);
Range rngFrom = rngTo.Offset[-24, -9];

然后绕圈并复制/粘贴该区域:

Range rngPaste = rngFrom.Offset[0, 1];
for (int i = 1; i == noPages; i++)
{
    Range rngCopy = wsBreakdown.Range[rngFrom.Address, rngTo.Address];
    rngCopy.Copy(Type.Missing);
    rngPaste.PasteSpecial(XlPasteType.xlPasteAllUsingSourceTheme, XlPasteSpecialOperation.xlPasteSpecialOperationNone, false, false);

    rngTo = wsBreakdown.Cells.SpecialCells(XlCellType.xlCellTypeLastCell, Type.Missing);
    rngFrom = rngTo.Offset[-24, -9];
    rngPaste = rngFrom.Offset[0, 1];
}