如何在C#中查找ExcelInterop中的第一个和最后一个单元格以及图形范围

时间:2013-08-17 20:50:17

标签: c# excel interop

尝试在Excel中绘制一个简单的csv文件:

1,2,3
4,5,6
7,8,9

如何以编程方式确定图形范围为A1:C3?

我试过了

            var lastCell = worksheet.Cells.get_End(XlDirection.xlUp);

确定最后一列,但似乎不起作用。

以下是我用来绘制文件图表的代码,我只需要确定范围。

using Microsoft.Office.InteropServices.Excel;



        Application application = new Application();
        Workbook workbook = application.Workbooks.Open(fileName);
        var worksheet = workbook.Worksheets[1] as
            Microsoft.Office.Interop.Excel.Worksheet;


                   // Add chart.
        var charts = worksheet.ChartObjects() as
            Microsoft.Office.Interop.Excel.ChartObjects;
        var chartObject = charts.Add(60, 10, 300, 300) as
            Microsoft.Office.Interop.Excel.ChartObject;
        var chart = chartObject.Chart;

        // Set chart range.
        var range = worksheet.get_Range( ); //  ????????
        chart.SetSourceData(range);

        // Set chart properties.
        chart.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlLine;
        chart.ChartWizard(Source: range,
            Title: graphTitle,
            CategoryTitle: xAxis,
            ValueTitle: yAxis);


        // Save.
        workbook.Save();
        workbook.Close();

1 个答案:

答案 0 :(得分:3)

您可以尝试以这种方式获得范围:

var range = worksheet.get_Range("A1", System.Type.Missing).CurrentRegion;

从单元格A1开始到达构成范围连续区域的最后一个单元格的范围。我认为这是使用CSV文件时的最佳选择。

根据MSDN (VBA)

  

(CurrentRegion)返回表示当前区域的Range对象。目前   region是由空行和空白的任意组合限定的范围   列。