Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 13 additions & 9 deletions src/MiniExcel/MiniExcel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -184,31 +184,35 @@ public static DataTable QueryAsDataTable(this Stream stream, bool useHeaderRow =

var dt = new DataTable(sheetName);
var first = true;
var rows = ExcelReaderFactory.GetProvider(stream, ExcelTypeHelper.GetExcelType(stream, excelType), configuration).Query(useHeaderRow, sheetName, startCell);
var rows = ExcelReaderFactory.GetProvider(stream, ExcelTypeHelper.GetExcelType(stream, excelType), configuration).Query(false, sheetName, startCell);

var keys = new List<string>();
var columnDict = new Dictionary<string, string>();
foreach (IDictionary<string, object> row in rows)
{
if (first)
{
foreach (var key in row.Keys)
foreach (var entry in row)
{
if (!string.IsNullOrEmpty(key)) // avoid #298 : Column '' does not belong to table
var columnName = useHeaderRow ? entry.Value?.ToString() : entry.Key;
if (!string.IsNullOrWhiteSpace(columnName)) // avoid #298 : Column '' does not belong to table
{
var column = new DataColumn(key, typeof(object)) { Caption = key };
var column = new DataColumn(columnName, typeof(object)) { Caption = columnName };
dt.Columns.Add(column);
keys.Add(key);
columnDict.Add(entry.Key, columnName);//same column name throw exception???
}
}

dt.BeginLoadData();
first = false;
if (useHeaderRow)
{
continue;
}
}

var newRow = dt.NewRow();
foreach (var key in keys)
foreach (var entry in columnDict)
{
newRow[key] = row[key]; //TODO: optimize not using string key
newRow[entry.Value] = row[entry.Key]; //TODO: optimize not using string key
}

dt.Rows.Add(newRow);
Expand Down