如题

解决方案 »

  1.   

    http://blog.csdn.net/chazikai24/archive/2010/07/27/5769318.aspx
    读csv跟读excel是一样的道理。要么手动改,要么加空格.
      

  2.   

    读取方式 
     string conStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelFile + "; Extended Properties=\"Excel 8.0;HDR=YES\";";
    设置断点发现 ,一个记录中,某些字段是空的 ,挺纳闷的 。
      

  3.   

    检查单元格格式
    打开EXCEL,遍历查看单元格值
      

  4.   

    1,连接字符串里加
    HDR=No;IMEX=1
    必须方法2.打开Excel,把每一个单元格的前面加'单引号,
      

  5.   

    http://wenku.baidu.com/view/d0aa826648d7c1c708a145cb.html看了你就明白了 
      

  6.   

    excel 字段中的数据类型不一致导致 的建议 先看一下http://wenku.baidu.com/view/d0aa826648d7c1c708a145cb.html
     或 直接将excel 转换为csv 格式 逐行读取 这样就不会有丢失了
      

  7.   

    我们都是这样写都是可以读取的,不知道不是怎么测试的。最好的方法是把Excel里面的所有单元格设置为文本格式,或者在每个单元格前面加'
    这些方法都是可行的。
    你如果不行,请把你的xls发到[email protected]
      

  8.   

    # public DataSet GetDataSet(string filePath)  
    #     {  
    #         string Connstr = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + filePath + "';Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'");  
    #         OleDbConnection Conn = new OleDbConnection(Connstr);  
    #         //创建ArrayList对象 存放所有sheetname    
    #         ArrayList sheetNamelist = new ArrayList();  
    #         //获取配置Excel中sheet总数(这里是根据项目需求配置的) 如果需要导入Excel表格所有sheet数据则将此代码删除  
    #         int sheetCount = Convert.ToInt32(ConfigurationManager.AppSettings["sheetCount"].ToString());  
    #         DataSet dsExcel = new DataSet();  
    #         try  
    #         {  
    #             if (Conn.State == ConnectionState.Closed)  
    #             {  
    #                 Conn.Open();  
    #             }  
    #             DataTable dtExcelSchema = Conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });  
    #             string sheetName = string.Empty;  
    #             if (dtExcelSchema.Rows.Count > sheetCount)  
    #             {  
    #                 Page.RegisterStartupScript("", "<mce:script type="text/javascript"><!--  
    # alert('很抱歉!你上传Excel文件sheet总数过多不能大于10个sheet..!! ')  
    # // --></mce:script>");  
    #                 return;  
    #             }  
    #             else  
    #             {  
    #                 for (int j = 0; j < dtExcelSchema.Rows.Count; j++)  
    #                 {  
    #                     sheetName = String.Format("Sheet{0}$", j + 1);  
    #                     sheetNamelist.Add(sheetName);  
    #                 }  
    #             }  
    #   
    #         }  
    #         catch (Exception ex)  
    #         {  
    #             throw new Exception(ex.Message.ToString(), ex);  
    #         }  
    #         finally  
    #         {  
    #             Conn.Close();  
    #         }  
    #         try  
    #         {  
    #             string strSQL = string.Empty;  
    #             for (int i = 0; i < sheetNamelist.Count; i++)  
    #             {  
    #                 strSQL = "select * from [" + sheetNamelist[i].ToString() + "]";  
    #                 OleDbDataAdapter da = new OleDbDataAdapter(strSQL, Conn);  
    #                 DataTable dtExcel = new DataTable(sheetNamelist[i].ToString());  
    #                 da.Fill(dtExcel);  
    #                 dsExcel.Tables.Add(dtExcel);  
    #             }  
    #             return dsExcel;  
    #         }  
    #         catch (Exception ex)  
    #         {  
    #             throw new Exception(ex.Message.ToString(), ex);  
    #         }  
    #     }  
    #   
    #    //从Excel 表中取出数据 将取出来的数据插入到数据库中  
    #     public void InsertData(DataSet ds) {  
    #          string strSQL=string.Empty;  
    #          if (ds.Tables[0].Rows.Count > 0)  
    #          {  
    #              for (int j = 0; j < ds.Tables.Count; j++)   
    #              {   
    #               for(int i=0;i<ds.Tables[j].Rows.Count;i++)  
    #               {  
    #                    DataRow dr=ds.Tables[j].Rows[i];  
    #                   //组名  
    #                  string groupname = dr["组名"].ToString().Trim();  
    #                  //联系人  
    #                  string contactName = dr["联系人"].ToString().Trim();  
    #                  //手机号码  
    #                  string mobile = dr["手机号码"].ToString().Trim();  
    #                  //公司名称  
    #                  string companyName = dr["公司名称"].ToString().Trim();  
    #                  //公办号码  
    #                  string officeNum = dr["办公号码"].ToString().Trim();  
    #                  //家庭号码  
    #                  string homeNum = dr["家庭号码"].ToString().Trim();  
    #                  //邮箱  
    #                  string Email = dr["邮 箱"].ToString().Trim();  
    #                  //联系地址  
    #                  string address = dr["联系地址"].ToString().Trim();  
    #                  //创建时间  
    #                  string createtime = dr["创建时间"].ToString().Trim();  
    #                  //性别  
    #                  string Sex = dr["性别"].ToString().Trim();  
    #                  //手机套餐类型  
    #                  string mobileType = dr["手机套餐类型"].ToString().Trim();  
    #                  //是否开通通信助理  
    #                  string isOpen = dr["是否开通通信助理"].ToString().Trim();  
    #                  //SQL   语句  
    #                  strSQL = "insert into msm_Excel(groupName,Mobile,Name,companyName,officeNum,homeNum,Emial,address,Createtime,Sex,mobileType,isOpen)values('" + groupname + "','" + mobile + "','" + contactName + "','" + companyName + "','" + officeNum + "','" + homeNum + "','" + Email + "','" + address + "','" + createtime + "','" + Sex + "','" + mobileType + "','" + isOpen + "')";  
    #                  try  
    #                  {  
    #                      int n = SQLHelper.SqlDataExecute(strSQL);  
    #                      if (n > 0)  
    #                      {  
    #                          Page.RegisterStartupScript("", "<mce:script type="text/javascript"><!--  
    # alert('数据插入成功!')  
    # // --></mce:script>");  
    #                          Label1.Text = "一共成功插入" + ds.Tables[j].Rows.Count.ToString() + "条数据";  
    #                      }  
    #                      else  
    #                      {  
    #                          Page.RegisterStartupScript("", "<mce:script type="text/javascript"><!--  
    # alert('服务器繁忙!请稍候再试..!')  
    # // --></mce:script>");  
    #                      }  
    #                  }  
    #                  catch (Exception ex)  
    #                  {  
    #                      throw ex;  
    #                  }  
    #               }  
    #          }                 
    #      }  
    #            
    #      else {  
    #          Page.RegisterStartupScript("", "<mce:script type="text/javascript"><!--  
    # alert('此Excel文件中无数据!!!')  
    # // --></mce:script>");  
    #       }  
    #       
    #     }  
    # //调用  
    # //获取上传文件名  
    #         string fileName = FileUpload1.FileName;  
    #             //判断是否存在上传文件  
    #         if (FileUpload1.PostedFile.FileName.Length == 0) {  
    #             Page.RegisterStartupScript("", "<mce:script type="text/javascript"><!--  
    # alert('请选择你要上传的Excel文件!!')  
    # // --></mce:script>");  
    #         }  
    #          //判断上传的文件类型是否正确  
    #         else if (!Path.GetExtension(FileUpload1.PostedFile.FileName).ToLower().Equals(".xls") && !Path.GetExtension(FileUpload1.PostedFile.FileName).ToLower().Equals(".xlsx"))  
    #         {  
    #             Page.RegisterStartupScript("", "<script>alert('很抱歉!你上传的文件类型不正确!只能上传Excel类型的文件!')</script.");  
    #         }  
    #         else  
    #         {  
    #             //获取上传的文件路径  
    #             filePath = Server.MapPath("TxtFiles\\") + DateTime.Now.ToString("yyyyMMddhhmmss") + fileName;  
    #             this.FileUpload1.PostedFile.SaveAs(filePath);  
    #             ds = GetDataSet(filePath);  
    #             InsertData(ds);  
    #         
    #         }  
      

  9.   

    <%@ Page Language="C#" %><%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.OleDb" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <script runat="server">  protected void Page_Load(object sender, EventArgs e)
      {
        String ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("Data.xls") + "; Extended Properties=\"Excel 8.0;HDR=No;IMEX=1;\"";
        OleDbConnection cn = new OleDbConnection(ConnectionString);
        cn.Open();
        OleDbCommand cmd = new OleDbCommand("Select * From [Sheet1$C3:FP5785]", cn);
        OleDbDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        GridView1.DataSource = dr;
        GridView1.DataBind();
        cn.Close();
      } 
    </script>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
      <title></title>
    </head>
    <body>
      <form id="form1" runat="server">
      <asp:GridView ID="GridView1" runat="server" ShowHeader="False">
      </asp:GridView>
      </form>
    </body>
    </html>
    不过,通过公式计算的单元格在Excel里也没显示出正确的值。
      

  10.   

    在 excel都看不到值啊。是不是公式是写错了?
      

  11.   

    http://d.namipan.com/d/24185eaeb5b9490d2379e061e54d001b53ebc08d00f22100
    我把excel放在网上了 ,大家有时间帮我看看吧,如果把最先面两行删除的话,就能够读取其他行的数据,如果带有下面两行,就读不出来。
     string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelFile + "; Extended Properties='Excel 8.0;HDR=Yes;IMEX =1;'";
     OleDbConnection excelConnection = new OleDbConnection(conStr);
                            excelConnection.Open();
     string strSQL = "SELECT * FROM [Sheet1$]";      //最大値
                            //string strSQL = "SELECT * FROM [Sheet1$0$5:" + "$" + (colIndex).ToString() + "$" + rowIndex.ToString() + "]";
                            OleDbCommand dbCommand = new OleDbCommand(strSQL, excelConnection);
                            OleDbDataAdapter dataAdapter = new OleDbDataAdapter(dbCommand);                        DataTable dTable = new DataTable();
                            dataAdapter.Fill(dTable);
      

  12.   

    不知道你是说哪些单元格读不出来
    我拿你那个文件试了下Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\MY\桌面\配分計画 【129  釜山物流センター 30週 2 回】.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1"select * from [Sheet1$]结果放在datagridview中,读出来的结果和在excel里看好像是一样的啊,没发现缺少数据,空的地方在Excel里也是空的
      

  13.   

    可能看不全,图片地址:
    http://hi.csdn.net/attachment/201008/16/1652785_128193977852RX.jpg
      

  14.   

    http://hi.csdn.net/attachment/201008/16/156168_1281943465HK6I.jpg
    这是我弄得  ,我在同事电脑上也这样做了 ,结果也是一样 。
    我的环境
    xp (sp2)
    vs2008
    sql2005(与这个没有关系吧)
    太郁闷了 
      

  15.   

    帅哥 把你的程序打包发给我吧  email : [email protected]
    ~
      

  16.   

    ………………
    你把IMEX =1当中的空格去掉……