Как удалить пустые строки и лишние столбцы из таблицы данных - PullRequest
0 голосов
/ 18 мая 2018

У меня есть процесс для импорта данных из Excel в БД с использованием ExcelReaderFactory.Но когда есть пустые строки / столбцы, мы сталкиваемся с проблемой.Ниже приведен мой оригинальный код:

IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(fileContent);
excelReader.IsFirstRowAsColumnNames = true;
DataSet result = excelReader.AsDataSet();                    
DataTable dataTable = result.Tables[0].Rows

. Он создает 2 проблемы:

  1. Если в конце есть пустые строки, они будут в базе данных.

  2. Если в конце есть пустые столбцы, они будут там в виде данных.

Есть ли способ удалить обе пустые строки иколонка.Я могу удалить пустые строки из таблицы данных, используя приведенный ниже код

IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(fileContent);
excelReader.IsFirstRowAsColumnNames = true;
DataSet result = excelReader.AsDataSet();

DataTable dataTable = result.Tables[0].Rows
                    .Cast<DataRow>()
                    .Where(row => !row.ItemArray.All(field => field is DBNull ||
                                                    string.IsNullOrWhiteSpace(field as string ?? field.ToString())))
                    .CopyToDataTable();

return dataTable;

Но он не удалит пустые столбцы.Есть ли лучший способ сделать это?

Как удалить также пустые столбцы?

Пожалуйста, найдите ниже изображение для справки.enter image description here

1 Ответ

0 голосов
/ 18 мая 2018

Вы можете использовать это расширение:

public static void RemoveEmptyColumns(this DataTable table, int columnStartIndex = 0)
{
    for (int i = table.Columns.Count - 1; i >= columnStartIndex; i--)
    {
        DataColumn col = table.Columns[i];
        if (table.AsEnumerable().All(r => r.IsNull(col) || string.IsNullOrWhiteSpace(r[col].ToString())))
            table.Columns.RemoveAt(i);
    }
}

Если вы хотите начать с заданного индекса, передайте его методу.

...