如何读取excel第一行数据 我每次读的时候只能从第二行开始读取语言c# 谢谢 解决立即结贴

解决方案 »

  1.   

    不可能呀,正常读取都是从第一行开始的,把excel作为数据源读取的
    string mystring="Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = '" + path +"';Extended Properties=Excel 8.0";
    string mywork ;
    mywork = GetExcelWorkSheet(path);
    OleDbConnection mycnn=new OleDbConnection(mystring);
    string mysql ="select * from ["+ mywork +"$]";
    mycnn.Open();
    OleDbDataAdapter myDataAdapter=new OleDbDataAdapter (mysql,mycnn);
    myDataSet =new DataSet();
    myDataAdapter.Fill(myDataSet,"[" + mywork +"$]");
    mycnn.Close();
    DataGrid1.DataMember="[" + mywork +"$]";
    DataGrid1.DataSource=myDataSet;
    DataGrid1.DataBind();
      

  2.   

    using System;
    using System.Data.OleDb;
    using System.Data;
    using Excel;namespace paladin.utility
    {
    /// <summary>
    /// ToEXCEL 的摘要说明。
    /// </summary>
    public class ToExcel
    {
    public ToExcel()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    } public void CreateExcel()
    {
    Excel.Application excel = new Excel.Application ( ) ;
    excel.Application.Workbooks.Add ( true ) ;
    excel.Cells[ 1 , 1 ] = "第一行第一列" ;
    excel.Cells[ 1 , 2 ] = "第一行第二列" ; 
    excel.Cells[ 2 , 1 ] = "第二行第一列" ; 
    excel.Cells[ 2 , 2 ] = "第二行第二列" ; 
    excel.Cells[ 3 , 1 ] = "第三行第一列" ; 
    excel.Cells[ 3 , 2 ] = "第三行第二列" ; 
    excel.Visible = true ; 
    } /// <summary>
    /// 通过类似sql的语句来访问excel数据
    /// </summary>
    /// <param name="filePath">excel文件的路径</param>
    /// <param name="strComm">要执行的select、update、delete命令</param>
    /// <returns></returns>
    public DataView SqlCommand_Excel(string filePath,string strComm)
    {
    //数据表(WorkSheet)名为“First”,可以这样取得所有数据:SELECT * FROM [First$]
    //我们要注意两点:一是数据表名必须用方括符;二是数据表名字一定要加一个“$”符号来表示这是一个数据表。
    //我们还可以限制检索数据的范围,比如我们要检索A1到D20的所有数据,可以这样检索:SELECT * FROM [SampleSheet$A1:D20]
    //插入数据:INSERT INTO [first$] (姓名,性别,年龄) VALUES ('章三', '男', '23')
    //修改更新数据:UPDATE SampleSheet$ SET Age = '24' WHERE FirstName = 'John' AND LastName = 'Albert'
    //建立数据表(WorkSheet):CREATE TABLE NewSheet ( Position char(255), Department char(255), DeptEmail char(255))  //filePath="F:\book1.xls"
    //strComm="SELECT * FROM [first$]"
    string strConn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+filePath+";Extended Properties=Excel 8.0;" ;
    OleDbConnection oleConn=new OleDbConnection(strConn);
    OleDbDataAdapter oleAdap=new OleDbDataAdapter(strComm, oleConn);
    DataSet ds=new DataSet();
    oleConn.Open();
    oleAdap.Fill(ds, "ExcelData");
    oleConn.Close() ;
    return ds.Tables[0].DefaultView;
    } /// <summary>
    /// 将dataview的数据导出为报表
    /// </summary>
    /// <param name="dv">要导出的数据</param>
    /// <param name="str">导出报表的标题</param>
    public void OutputExcel(DataView dv,string str)
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    Excel.Application excel;
    int rowIndex=4;
    int colIndex=1; Excel._Workbook xBk;
    Excel._Worksheet xSt; excel= new Excel.ApplicationClass();
    xBk = excel.Workbooks.Add(true);
    xSt = (Excel._Worksheet)xBk.ActiveSheet; //
    //取得标题
    //
    foreach(DataColumn col in dv.Table.Columns)
    {
    colIndex++;
    excel.Cells[4,colIndex] = col.ColumnName;
    xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[4,colIndex]).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//设置标题格式为居中对齐
    } //
    //取得表格中的数据
    //
    foreach(DataRowView row in dv)
    {
    rowIndex ++;
    colIndex = 1;
    foreach(DataColumn col in dv.Table.Columns)
    {
    colIndex ++;
    if(col.DataType == System.Type.GetType("System.DateTime"))
    {
    excel.Cells[rowIndex,colIndex] = (Convert.ToDateTime(row[col.ColumnName].ToString())).ToString("yyyy-MM-dd");
    xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[rowIndex,colIndex]).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//设置日期型的字段格式为居中对齐
    }
    else
    if(col.DataType == System.Type.GetType("System.String"))
    {
    excel.Cells[rowIndex,colIndex] = "'"+row[col.ColumnName].ToString();
    xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[rowIndex,colIndex]).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//设置字符型的字段格式为居中对齐
    }
    else
    {
    excel.Cells[rowIndex,colIndex] = row[col.ColumnName].ToString();
    }
    }
    }
    //
    //加载一个合计行
    //
    int rowSum = rowIndex + 1;
    int colSum = 2;
    excel.Cells[rowSum,2] = "合计";
    xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,2]).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
    //
    //设置选中的部分的颜色
    //
    xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Select();
    xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Interior.ColorIndex = 19;//设置为浅黄色,共计有56种
    //
    //取得整个报表的标题
    //
    excel.Cells[2,2] = str;
    //
    //设置整个报表的标题格式
    //
    xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Bold = true;
    xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Size = 22;
    //
    //设置报表表格为最适应宽度
    //
    xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Select();
    xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Columns.AutoFit();
    //
    //设置整个报表的标题为跨列居中
    //
    xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).Select();
    xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenterAcrossSelection;
    //
    //绘制边框
    //
    xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Borders.LineStyle = 1;
    xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,2]).Borders[Excel.XlBordersIndex.xlEdgeLeft].Weight = Excel.XlBorderWeight.xlThick;//设置左边线加粗
    xSt.get_Range(excel.Cells[4,2],excel.Cells[4,colIndex]).Borders[Excel.XlBordersIndex.xlEdgeTop].Weight = Excel.XlBorderWeight.xlThick;//设置上边线加粗
    xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[rowSum,colIndex]).Borders[Excel.XlBordersIndex.xlEdgeRight].Weight = Excel.XlBorderWeight.xlThick;//设置右边线加粗
    xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,colIndex]).Borders[Excel.XlBordersIndex.xlEdgeBottom].Weight = Excel.XlBorderWeight.xlThick;//设置下边线加粗
    //
    //显示效果
    //
    excel.Visible=true;
    }
    }
    }