string strConn;
            strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                "Data Source=C:\\Inetpub\\wwwroot\\contacts.xls;"+
                "Extended Properties=Excel 8.0;";
            OleDbConnection conn = new OleDbConnection(strConn);
            OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [ContactList$]", strConn);
            DataSet myDataSet = new DataSet();
            myCommand.Fill(myDataSet);
            DataGrid1.DataSource = myDataSet.Tables[0];
            DataGrid1.DataBind();使用上述代码后发现某些列的数字值会丢失,变为NULL
请教如何解决此问题?

解决方案 »

  1.   

    参看
    http://www.codeproject.com/csharp/excel_using_oledb.asp
      

  2.   

    to 使用上述代码后发现某些列的数字值会丢失,变为NULL
    请教如何解决此问题?如果变为null,有可能你的数据格式有问题。
      

  3.   

    格式有可能有问题,因为是别人做EXCEL.
    那应该转换成什么格式的呢?
      

  4.   

    那你对比一下,看看哪些行的值为null。
      

  5.   

    都是一些纯数字的单元隔会转换为NULL。
    这个EXCEL里所有格式都是文本型,我把他们全转换为数字或常规都不行。
    而且我新输入了一些数字格式的值,也显示不出来.
      

  6.   

    string ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:/aa.xls;Extended Properties='Excel 8.0;HDR=NO;IMEX=1';"
     用这个连接试试,注意后面的两个参数
      

  7.   

    #region 获取Excel文件的表的数据 /// <summary>
    /// 获取Excel文件指定的表的数据
    /// </summary>
    /// <param name="ExcelPath">Excel文件路径</param>
    /// <param name="ExcelTableName">表名</param>
    /// <returns>DataSet</returns>
    public static DataSet ExcelGetData(string ExcelPath,string ExcelTableName)
    {
    string oleConn="Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + ExcelPath +";Extended Properties=Excel 8.0" ;
    DataSet ds = new DataSet();
    try
    {
    System.Data.OleDb.OleDbCommand oleComm = new OleDbCommand();
    System.Data.OleDb.OleDbDataAdapter oleDa =new OleDbDataAdapter("select * from ["+ExcelTableName+"$]",oleConn); oleDa.Fill(ds,ExcelTableName);
    }
    catch(System.Exception)
    {
    HOH.Common.Common.strMessage = "程序发生错误!";
    }
    return ds;
    }
    #endregion