我正在使用C ++ unmanaged和Excel 2007.我正在使用Excel4 API调用来获取用户选择的单元格范围。
当用户选择我称之为“常用”范围的内容时,此调用将返回类似“R1C1:R4C3”的范围,这正是我在应用程序中执行其他操作所需的格式。
然而,当用户决定选择整列时,这个API调用只返回一个范围,只有列,类似于“C1:C3”,这当然是一个有效的excel范围,但它对我来说意味着我有修改它,使它看起来像上面的范围;换句话说,我必须手动添加行范围。
所以我把这个范围“C1C3”改为“R1C1:R65534C3”。
也许在这一点上你已经注意到了我的问题,因为你可以看到我很难将行范围编码为Excel 2003支持的最大行数(该应用程序也适用于此版本的excel)。
这当然不是我想要的,因为一旦我得到所选范围,我就会读取该范围内的信息并使用该信息向服务器发出查询,因此想象一下用户只输入了数据直到第534行仍然我的查询将有65000行没有任何内容。
所以我的问题是如何获取用户输入数据的最后一个单元格,我认为它被称为最后一个活动单元格,所以我可以划分我的范围直到该行,请记住我正在使用非托管代码。
答案 0 :(得分:3)
Excel 4 API?真的?
有一个命令xlcSelectEnd,您可以使用它来跳转到最后一个单元格,其中包含从给定单元格的任何方向输入的文本。
答案 1 :(得分:1)
尝试将range.selection转换为Range对象。
答案 2 :(得分:0)
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