Это изменение, которое я делаю для кода:
private static void MergeData(string path, DataTable dt)
{
// HSSFWorkbook workbook = new HSSFWorkbook(path);
HSSFWorkbook workbook;
using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
{
workbook = new HSSFWorkbook();
}
HSSFSheet sheet = (HSSFSheet)workbook.GetSheetAt(0);
HSSFRow headerRow = (HSSFRow)sheet.GetRow(0);
int cellCount = headerRow.LastCellNum;
if (dt.Rows.Count == 0)
{
for (int i = headerRow.FirstCellNum; i < cellCount; i++)
{
DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue);
dt.Columns.Add(column);
}
}
else
{
}
int rowCount = sheet.LastRowNum + 1;
for (int i = (sheet.FirstRowNum + 1); i < rowCount; i++)
{
HSSFRow row = (HSSFRow)sheet.GetRow(i);
DataRow dataRow = dt.NewRow();
for (int j = row.FirstCellNum; j < cellCount; j++)
{
if (row.GetCell(j) != null)
dataRow[j] = row.GetCell(j).ToString();
}
dt.Rows.Add(dataRow);
}
workbook = null;
sheet = null;
}
Теперь в этой строке кода: `
HSSFSheet sheet = (HSSFSheet)workbook.GetSheetAt(0);
он говорит мне System.ArgumentOutOfRangeException:Индекс был вне диапазона.Должен быть неотрицательным и меньшим, чем размер коллекции.Имя параметра: index '. Я читал об этой ошибке и знаю, что инициализировать индекс или создать его, я тоже пытался, но безрезультатно.Что я делаю не так или, может быть, где предполагается инициализировать индекс?Остальной код такой же, как и на предыдущей панели, только эту пустоту я изменил в документе Merge .xls.