2017-10-11 38 views
1

我希望得到您的帮助,因为我在C#和Visual Studio中完全是新手。我想加载没有第一行的Excel表格。这里是我的代码到目前为止:将数据从excel加载到数据库,而不是第一行

namespace Calculate_Overtime_Load_in_DB 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void btnImport_Click(object sender, EventArgs e) 
     { 
      OpenFileDialog ope = new OpenFileDialog(); 
      ope.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm"; 
      if (ope.ShowDialog() == DialogResult.Cancel) 
       return; 

      FileStream stream = new FileStream(ope.FileName, FileMode.Open); 

      IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); 

      excelReader.IsFirstRowAsColumnNames = false; 
      DataSet result = excelReader.AsDataSet(); 

      DataClasses1DataContext conn = new DataClasses1DataContext(); 
      foreach (DataTable table in result.Tables) 
      { 
       foreach (DataRow dr in table.Rows) 
       { 
        SCE_Overtime addtable= new SCE_Overtime() 
        { 
         Date = Convert.ToString(dr[0]), 
         Name = Convert.ToString(dr[1]), 
         Work_Shift = Convert.ToString(dr[2]), 
         Approved_Overtime = Convert.ToString(dr[3]), 
         Holiday = Convert.ToString(dr[4]), 
         Final_Overtime = Convert.ToString(dr[5]) 
        }; 

        conn.SCE_Overtimes.InsertOnSubmit(addtable); 
       } 
      } 

      conn.SubmitChanges(); 
      excelReader.Close(); 
      stream.Close(); 
      MessageBox.Show("Table has been laoded!"); 
     } 
    } 
} 

如何跳过Excel表的第一行?

+0

*“没有第一行”* ='跳过(1)'。 – Sinatr

+0

[从DataTable选择第二组20行的可能的重复](https://stackoverflow.com/questions/14717644/selecting-second-set-of-20-row-from-datatable) – Sinatr

回答

0

我一直在上网的解决方案,我已经找到了两件事情:

  1. 的一篇文章,可以帮助你解决你的问题:

https://codereview.stackexchange.com/questions/47227/reading-data-from-excel-sheet-with-exceldatareader

  • 还有另一种方式来读取excel文件,通过使用OLEDB可以转换行名称中的第一行值(但可以避免),所以,看看这个其他问题,考虑到指望。2-15,这家伙已经在他的连接字符串类型:
  • Importing Excel data into C# without first row becoming column names?

    我希望它能帮助,

    胡安

    0
    for (int i = 0; i < table.Rows.Count; i++) 
    { 
        if(i > 0){ 
         //Your Code 
        } 
    } 
    
    0

    是很常见忽略第一行,因为它包含头。

    您有以下代码。

    excelReader.IsFirstRowAsColumnNames = false; 
    

    是否改变这个...

    excelReader.IsFirstRowAsColumnNames = true; 
    

    ...删除需要忽略第一行?

    +0

    谢谢!!!解决了我的问题!!!!! :) – Tasos

    相关问题