Я написал некоторый код и в нем foreach переносит все данные в столбцы Excel ...
Но я хочу выяснить, содержит ли файл Excel какой-либо пустой столбец (CELL) или любой другой тип данных, который может привести к ошибке при сохранении его в базе данных
Когда в Excel есть пустая ячейка, цикл foreach пропускает этот столбец, и я не могу поставить условие для проверки там пустого значения
using OfficeOpenXml;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
public static class ExcelPackageExtensions
{
public static DataTable ToDataTable(this ExcelPackage package)
{
ExcelWorksheet worksheet = package.Workbook.Worksheets.First();
DataTable dt = new DataTable();
foreach (var firstRowCell in worksheet.Cells[1, 1, 1, worksheet.Dimension.End.Column])
{
dt.Columns.Add(firstRowCell.Text);
}
for (var rowNumber = 2; rowNumber <= worksheet.Dimension.End.Row; rowNumber++)
{
var row = worksheet.Cells[rowNumber, 1, rowNumber, worksheet.Dimension.End.Column];
var newRow = dt.NewRow();
foreach (var cell in row)
{
if (cell.Start.Column == 2)//when col2 has no data in excel foreach skips and i'm not able to check the null value
{
if (cell.Text == null)
{ goto End; }
}
if (cell.Start.Column == 3)
{
if (cell.Text == null)
{ goto End; }
}
if (cell.Start.Column == 18)
{
string datefromtemp = Convert.ToString(cell.Text);
DateTime datefromtemp2 = Convert.ToDateTime(datefromtemp, System.Globalization.CultureInfo.InvariantCulture);
newRow[cell.Start.Column - 1] = datefromtemp2;
}
else if (cell.Start.Column == 19)
{
string datetotemp = Convert.ToString(cell.Text);
DateTime datetotemp2 = Convert.ToDateTime(datetotemp, System.Globalization.CultureInfo.InvariantCulture);
newRow[cell.Start.Column - 1] = datetotemp2;
}
else if (cell.Start.Column == 21)
{
string createddatetemp = Convert.ToString(cell.Text);
DateTime createddatetemp2 = Convert.ToDateTime(createddatetemp, System.Globalization.CultureInfo.InvariantCulture);
newRow[cell.Start.Column - 1] = createddatetemp2;
}
else if (cell.Start.Column == 23)
{
string modifieddatetemp = Convert.ToString(cell.Text);
DateTime modifieddatetemp2 = Convert.ToDateTime(modifieddatetemp, System.Globalization.CultureInfo.InvariantCulture);
newRow[cell.Start.Column - 1] = modifieddatetemp2;
}
else if (cell.Start.Column == 24)
{
int isactivetemp = Convert.ToInt32(cell.Text);
bool isactivetemp2 = Convert.ToBoolean(isactivetemp);
newRow[cell.Start.Column - 1] = isactivetemp2;
}
else
{
newRow[cell.Start.Column - 1] = cell.Text;
}
}
End:
dt.Rows.Add(newRow);
}
return dt;
}
}