Я знаю, что есть несколько подходов, чтобы найти общее количество заполненных строк и столбцов на основе индивидуальных требований. Один из подходов я пытаюсь использовать подход Cells.Find, чтобы найти количество заполненных строк и столбцов. Я нашел один соответствующий пост здесь: C# Excel: правильный способ получить количество строк и столбцов , это именно то, что мне нужно. Я скопировал формат и заменил переменные и работал нормально. Однако возвращаемое значение lastUsedColumn равно 1 вместо 4, тогда как lastUsedRow возвращает 5, что в точности верно. Формат файла для моего файла Excel - .xls, а не .csv. Я некоторое время изучал C#, читая онлайн-документы, но все еще не мог понять, почему xlByColumns здесь не работает или я что-то упустил ..? Может кто-нибудь помочь объяснить ..? Спасибо.
Пример данных в моем Excel (.xls)
0.02 | 1.352 | 2.447 | -3.9924
0.04 | 2.991 | 9.556 | 3.227
0.06 | -9.119 | 1.883 | 2.004
0.08 | 5.382 | -9.003 | 7.441
1.00 | -8.803 | - 6.443 | 7.210
* Символ | представляют столбец, таким образом, всего имеется 4 столбца и 5 строк.
Excel.Application app = null;
Excel.Workbook wb = null;
Excel.Worksheet ws = null;
double lastUsedRow = 0;
double lastUsedColumn = 0;
string FFile = @"C:\Users\Student\Downloads\FFile.xls";
StreamWriter rowvalue = File.CreateText(@"C:\Users\Student\Downloads\rowvalue.xls");
StreamWriter colvalue = File.CreateText(@"C:\Users\Student\Downloads\colvalue.xls");
app = new Excel.Application();
app.Visible = false;
wb = app.Workbooks.Open(FFile, 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
ws = (Excel.Worksheet)wb.Worksheets[1];
object missV = System.Reflection.Missing.Value;
// Find the last real row
// Return result 5 (correct)
lastUsedRow = ws.Cells.Find("*", missV, missV, missV, Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlPrevious, false, true, missV).Row;
rowvalue.WriteLine(lastUsedRow);
// Find the last real column
// Return result 1 (wrong)
lastUsedColumn = ws.Cells.Find("*", missV, missV, missV, Excel.XlSearchOrder.xlByColumns, Excel.XlSearchDirection.xlPrevious, false, true, missV).Column;
colvalue.WriteLine(lastUsedColumn);