数据表的标题将作为记录插入表中。我正在递增行号,但仍插入标题。有人能告诉我这是什么问题吗?如果你看到我正在做的行下面的代码.MoveNext。
XSSFWorkbook xssfwb;
using (FileStream file = new FileStream(excelPath, FileMode.Open, FileAccess.Read))
{
xssfwb = new XSSFWorkbook(file);
}
var sheet = xssfwb.GetSheetAt(0); // Change this to the worksheet you want to import.
var rows = sheet.GetRowEnumerator();
var dtExcelData = new DataTable();
var linenumber = 0;
DataRow dr;
dtExcelData.Columns.AddRange(new DataColumn[3] {
new DataColumn("AccountNumber", typeof(string)),
new DataColumn("Amount", typeof(decimal)),
new DataColumn("Sedol",typeof(string)) });
while (rows.MoveNext())
{
IRow row = (XSSFRow)rows.Current;
linenumber++;
row.GetCell(4).SetCellType(CellType.Numeric);
if (row.GetCell(0) != null)
{
dr = dtExcelData.NewRow();
dr["AccountNumber"] = row.GetCell(1).ToString();
dr["Amount"] = decimal.Parse(row.GetCell(4).ToString());
//dr["Amount"] = (decimal)row.GetCell(4).NumericCellValue;
dr["Sedol"] = row.GetCell(11).ToString();
dtExcelData.Rows.Add(dr);
}
}
//DealingContext.ExecuteCommand("TRUNCATE TABLE [dbDealing].[MESSAGING].[Rebate]");
DealingContext.ExecuteCommand("TRUNCATE TABLE [dbo].[Testxyz]");
//Set the database table name
using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(DealingContext.Connection.ConnectionString))
{
//sqlBulkCopy.DestinationTableName = "[dbo].[Testxyz]";
sqlBulkCopy.DestinationTableName = "[dbo].[Testxyz]";
//[OPTIONAL]: Map the Excel columns with that of the database table
sqlBulkCopy.ColumnMappings.Add("AccountNumber", "AccountNumber");
sqlBulkCopy.ColumnMappings.Add("Amount", "Amount");
sqlBulkCopy.ColumnMappings.Add("Sedol", "Sedol");
sqlBulkCopy.WriteToServer(dtExcelData);
}
答案 0 :(得分:0)
标题是从rows
返回的第一行,只是在导入时跳过该行。
//(snip)
dtExcelData.Columns.AddRange(new DataColumn[3] {
new DataColumn("AccountNumber", typeof(string)),
new DataColumn("Amount", typeof(decimal)),
new DataColumn("Sedol",typeof(string)) });
//Makes the header row the current row.
rows.MoveNext();
//Moves to the first row with data and loops till done.
while (rows.MoveNext())
{
IRow row = (XSSFRow)rows.Current;
linenumber++;
row.GetCell(4).SetCellType(CellType.Numeric);
if (row.GetCell(0) != null)
{
//(snip)