我正在將數據從excel文件移動到數據表,其中第10行是列值。因此,我通過使用EPPLUS庫(OfficeOpenXml)使用以下代碼。當我移動到數據表時列是Item,Description,Accountnumber,Tender,Levelnumbers
。我說這些都是excel文件的第10行,因此由於頂級列的合併,它會像Item,Column1,Column2,Description,Column3,Column4,Column5,Tender,Column6,Levelnumbers
這樣的序列進來。我需要一個像第一個邏輯,我需要跳過空行(無數據)列Levelnumbers
然後描述列名應移到Column4和描述的當前列應命名,如「EDATA」,所以列順序應該是這樣Item,Column1,Column2,Edata,Column3,Description,Column5,Tender,Column6,Levelnumbers
如何將excel文件數據導入到c#中的數據表中
所以乾脆用下面的代碼我得到了在數據表中的值一樣
Item,Column1,Column2,Description,Column3,Column4,Column5,Tender,Column6,Levelnumbers
1,null,null,Efax,null,Edescription1,null,Tfirst,null,123353
2,null,null,Zfax,null,Zdescription1,null,Tsecond,null,null
3,null,null,Xfax,null,Xdescription1,null,Tthird,null,456546
但它應該像(Levelnumbers空白的跳過值),如何實現它?使用
Item,Column1,Column2,Edata,Column3,Description,Column5,Tender,Column6,Levelnumbers
1,null,null,Efax,null,Edescription1,null,Tfirst,null,123353
3,null,null,Xfax,null,Xdescription1,null,Tthird,null,456546
代碼
public static DataTable getDataTableFromExcel(string path)
{
using (var pck = new OfficeOpenXml.ExcelPackage())
{
DataTable tbl = new DataTable();
try
{
using (var stream = File.OpenRead(path))
{
pck.Load(stream);
}
var ws = pck.Workbook.Worksheets.First();
bool hasHeader = true; // adjust it accordingly(i've mentioned that this is a simple approach)
string ErrorMessage = string.Empty;
foreach (var firstRowCell in ws.Cells[10, 1, 17, ws.Dimension.End.Column])
{
tbl.Columns.Add(hasHeader ? firstRowCell.Text : string.Format("Column {0}", firstRowCell.Start.Column));
}
var startRow = hasHeader ? 11 : 1;
for (var rowNum = startRow; rowNum <= ws.Dimension.End.Row; rowNum++)
{
var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column];
var row = tbl.NewRow();
foreach (var cell in wsRow)
{
row[cell.Start.Column - 1] = cell.Text;
}
tbl.Rows.Add(row);
}
}
catch (Exception exp)
{
}
return tbl;
}
}
我需要它,我得到的,而不是Excel數據表玩? – peter