При попытке считать все ячейки документа Excel с помощью библиотеки Interop, часть ячеек считывается корректно, часть(большая) не считывается вовсе, и в итоге отображается как null. Использование Text, Value2 результата не меняет.
var lastCell = excelworksheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell);
int lastColumn = (int)lastCell.Column;//!сохраним непосредственно требующееся в дальнейшем
int lastRow = (int)lastCell.Row;
string[,] list = new string[lastCell.Column, lastCell.Row]; // массив значений с листа равен по размеру листу
for (int k = 0; k < (int)lastCell.Column; k++) //по всем колонкам
for (int j = 0; j < (int)lastCell.Row; j++)
{ // по всем строкам
list[i, j] = (excelworksheet.Cells[j + 1, i + 1] as Excel.Range).Value;//считываем текст в строку
}
Попробуй сделать так:
public DataModel GetDataFromExcelFile(string filePath, int startRow, int startColumn, int endColumn)
{
Excel.Workbook wb = null;
Excel.Application excel = null;
Excel.Worksheet xlSheets = null;
try
{
excel = new Excel.Application();
wb = excel.Workbooks.Open(filePath);
xlSheets = wb.ActiveSheet;
Excel.Range range = xlSheets.UsedRange;
int rowsCount = range.Rows.Count;
var startCell = (Excel.Range)xlSheets.Cells[startRow, startColumn];
var endCell = new object();
endCell = (Excel.Range)xlSheets.Cells[rowsCount, endColumn];
var writeRange = xlSheets.get_Range(startCell, endCell);
var data = writeRange.get_Value();
var dataModel = new DataModel
{
RowCount = rowsCount,
Data = data
};
return dataModel;
}
catch (Exception ex)
{
return null;
}
finally
{
wb?.Close(false, filePath);
if (xlSheets != null)
Marshal.ReleaseComObject(xlSheets);
if (excel != null)
Marshal.ReleaseComObject(excel);
if (wb != null)
Marshal.ReleaseComObject(wb);
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я буду именовать блоки когда по номеру, который они выводятКак я понимаю, в блоке '2', мы явно не указываем тип исключения, то есть результат...
Как правильно использовать entity framework? Нужно создавать DbContext для каждого вызова, или создать один раз и использовать всё время жизни приложения?
Хотите улучшить этот вопрос? Переформулируйте вопрос, чтобы он соответствовал тематике «Stack Overflow на русском»
Как должна выглядеть строка подключения к MS SQL Server 2008 при условии, что экземпляр MS SQL Server установлен на одном из удалённых компьютеров, расположенных...