C# 如何使用c语言根据特定单元格值从excel中获取记录

C# 如何使用c语言根据特定单元格值从excel中获取记录,c#,excel,C#,Excel,看更多:大家好 我目前正在处理windows项目。我想使用c将excel数据导入数据库 我的电子表格是 ExcelSheet |--------------------------------------------------| | | |-----------------------------------------------

看更多:大家好 我目前正在处理windows项目。我想使用c将excel数据导入数据库

我的电子表格是

  ExcelSheet
  |--------------------------------------------------|
  |                                                                           |
  |--------------------------------------------------|
  |                                                                           |
  |--------------------------------------------------|
  | Merchant no:12345                                                |
  |--------------------------------------------------|
  | merchant no|         Id No |Amount   | branch name |   
  |------------|-------------|---------|-------------|
  |      12345   |            101 |   10000   | Hyd            |   
  |------------| ------------| --------|-------------|
  |      12345   |            102 |   20000   |   Bombay      | 
  |------------|-------------|---------|-------------|
  |      12345   |            103 |   30000   |      Delhi            |
  |---------------------------------------------------
现在,我想根据单元格值=12345读取总excel工作表,这里开始的两行为空,我的代码读取所有记录忽略空记录 并将所有记录存储到数据库中。这是我的任务。我已经实现了如下代码

private void btnImport_Click(object sender, EventArgs e)
{
    try
    {
        DataTable dtExcel=new DataTable();
        string SourceConstr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + txtExcelFile.Text + "';Extended Properties= 'Excel 8.0;HDR=Yes;IMEX=1'";
        OleDbConnection con = new OleDbConnection(SourceConstr);
        string query="Select * from [Sheet1$]";
        OleDbDataAdapter data=new OleDbDataAdapter(query,con);
        data.Fill(dtExcel);
        //dgvExcelData.DataSource = dtExcel;
        //dgvExcelData.ColumnHeadersVisible=false;
        string DestConstr = @"Data Source=COMPUTER-8EB749;Initial Catalog=TRMSDB;Integrated Security=true";
        SqlConnection connection = new SqlConnection(DestConstr);
        connection.Open();

        string Mno = "";
        foreach (DataRow rowExcel in dtExcel.Rows)
        {
            foreach (DataColumn colExcel in dtExcel.Columns)
            {
                Mno = rowExcel[colExcel].ToString().Trim();
                if (Mno != "")
                {
                    string Mno1 = Mno.Substring(16, 10);
                    Mno =Mno1.ToString();
                    //Int32 MerchNo = Convert.ToInt32(Mno);
                }
                break;
            }
        if(Mno!="")// Mno contains the exact MerchantNo.
        {
            for(int i=0;i<dtExcel.Rows.Count;i++)
            {
                if (dtExcel.Rows.Contains("MerchantNo=1105393011"))
                {
                     string str = dtExcel.Rows[i][0].ToString().Trim();
                     string str1 = dtExcel.Rows[i][1].ToString().Trim();
                }
            }
        }
    }
}
是的,我有将excel导入数据表和将数据表导入数据库的这类知识

我对这份excel表格的要求如下 1.忽略空行。 2.不读取前两行并将其视为空行。 3.根据单元格值读取记录12345

我的问题是 1.我希望一次读取总记录或基于行号和 并存储到变量中

我很困惑。任何人都能给我很好的导入数据的建议,并给出很好的例子 或者修改我的代码。plz

 using Microsoft.Office.Interop.Excel;

  ApplicationClass app = null;
  Workbook workBook = null;
  CultureInfo ci = Thread.CurrentThread.CurrentCulture;
  Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
  app = new ApplicationClass();
  workBook = app.Workbooks.Open(pathToExcelFile, Type.Missing, true, Type.Missing,      Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

  Range range = ((Microsoft.Office.Interop.Excel.Worksheet)workBook.Sheets[sheet.Index]).UsedRange;

  for (int i = 0; i < range.Rows.Count - 1; i++)
  {
      Index++;
      string val  = ((Range)range.Cells[rowIndex, colIndex]).Value2;
  }

像这样的。至少对我有用。抱歉,但是try/catch、检查null等由您决定。它适用于NET3.5

一次没有catch语句的尝试?OP看起来很匆忙,也许这就是原因!