我正在使用C ++ unmanaged和Excel 2007.我正在使用Excel4 API调用来获取用户选择的单元格范围。

当用户选择我称之为“共同”的内容时,范围,此调用返回一个类似“R1C1:R4C3”的范围,这正是我在我的应用程序中执行其他操作所需的格式。

然而,当用户决定选择整列时,这个API调用只返回一个范围,只有列,类似于“C1:C3”,这当然是一个有效的excel范围,但它对我意味着我必须修改它,使它看起来像上面的范围;换句话说,我必须手动添加行范围。

所以我把这个范围称为“C1C3”。并将其改为“R1C1:R65534C3”。

也许在这一点上你已经注意到了我的问题,因为你可以看到我很难将行范围编码为Excel 2003支持的最大行数(该应用程序也适用于此版本的excel)。

这当然不是我想要的,因为一旦我得到所选范围,我就会读取该范围内的信息并使用该信息向服务器发出查询,因此想象一下用户只输入了数据直到第534行仍然我的查询将有65000行没有任何内容。

所以我的问题是如何获取用户输入数据的最后一个单元格,我认为它被称为最后一个活动单元格,所以我可以划分我的范围直到该行,请记住我正在使用非托管代码。

有帮助吗?

解决方案

Excel 4 API?真的?

有一个命令xlcSelectEnd,您可以使用它来跳转到最后一个单元格,并在给定单元格的任何方向上输入文本。

其他提示

尝试将range.selection转换为Range对象。

区域获取上次使用的行

     Excel.ApplicationClass app = new Excel.ApplicationClass();
        Excel.Workbook workBook = app.Workbooks.Open(_PathFile,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value);
        // Get the active worksheet using sheet name or active sheet
        Excel.Worksheet workSheet = (Excel.Worksheet)workBook.ActiveSheet;
        // Find the last real row
        int _InLastRow = workSheet.Cells.Find("*",System.Reflection.Missing.Value,
            System.Reflection.Missing.Value, System.Reflection.Missing.Value, Excel.XlSearchOrder.xlByRows,Excel.XlSearchDirection.xlPrevious, false,System.Reflection.Missing.Value,System.Reflection.Missing.Value).Row;
#endregion
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top