try
            {
                string fullfilename = this.FileUpload1.PostedFile.FileName;
                string filename = fullfilename.Substring(fullfilename.LastIndexOf("\\") + 1);
                string type = fullfilename.Substring(fullfilename.LastIndexOf(".") + 1);
                if (type != "xls")
                {
                    Jscript.Alert("您选择的文件不正确!");
                }
                else
                {
                    string mystring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fullfilename + ";Extended Properties=Excel 8.0";
                    OleDbConnection cnnxls = new OleDbConnection(mystring);
                    OleDbDataAdapter myDa = new OleDbDataAdapter("select   *   from  [Sheet1$]", cnnxls);
                    DataSet myDs = new DataSet();
                    myDa.Fill(myDs);                    if (myDs.Tables[0].Rows.Count > 0)
                    {
                        string strSql = "";
                        for (int i = 0; i <= myDs.Tables[0].Rows.Count; i++)
                        {
                                                        try
                            {
                                int df = i;
                               a .Save(
                                     myDs.Tables[0].Rows[i].ItemArray[0].ToString().Trim(), 
                                     myDs.Tables[0].Rows[i].ItemArray[1].ToString().Trim(),
                                     myDs.Tables[0].Rows[i].ItemArray[2].ToString().Trim(), 
                                     myDs.Tables[0].Rows[i].ItemArray[3].ToString().Trim(),
                                     myDs.Tables[0].Rows[i].ItemArray[4].ToString().Trim(), 
                                     myDs.Tables[0].Rows[i].ItemArray[5].ToString().Trim(),
                                     myDs.Tables[0].Rows[i].ItemArray[6].ToString().Trim(),
                                     myDs.Tables[0].Rows[i].ItemArray[7].ToString().Trim(),
                                     myDs.Tables[0].Rows[i].ItemArray[8].ToString().Trim(), 
                                     myDs.Tables[0].Rows[i].ItemArray[9].ToString().Trim(),
                                     myDs.Tables[0].Rows[i].ItemArray[10].ToString().Trim(), 
                                     myDs.Tables[0].Rows[i].ItemArray[11].ToString().Trim(),
                                     myDs.Tables[0].Rows[i].ItemArray[12].ToString().Trim(),
                                     myDs.Tables[0].Rows[i].ItemArray[13].ToString().Trim(),
                                     myDs.Tables[0].Rows[i].ItemArray[14].ToString().Trim(),
                                     myDs.Tables[0].Rows[i].ItemArray[15].ToString().Trim(),
                                     myDs.Tables[0].Rows[i].ItemArray[16].ToString().Trim(),
                                     myDs.Tables[0].Rows[i].ItemArray[17].ToString().Trim(),
                                     myDs.Tables[0].Rows[i].ItemArray[18].ToString().Trim(),
                                     myDs.Tables[0].Rows[i].ItemArray[19].ToString().Trim());                            }
                            catch
                            {
                                zf += zf;
                                zf2 = zf.ToString() + ",";
                                int adsfdfasd = i;
                                string asdfas1 = myDs.Tables[0].Rows[i].ItemArray[0].ToString().Trim();
                                string asdfas2 = myDs.Tables[0].Rows[i].ItemArray[1].ToString().Trim();
                                string asdfas3 = myDs.Tables[0].Rows[i].ItemArray[2].ToString().Trim();
                                string asdfas4 = myDs.Tables[0].Rows[i].ItemArray[3].ToString().Trim();
                                string asdfas5 = myDs.Tables[0].Rows[i].ItemArray[4].ToString().Trim();
                                string asdfas6 = myDs.Tables[0].Rows[i].ItemArray[5].ToString().Trim();
                                string asdfas7 = myDs.Tables[0].Rows[i].ItemArray[6].ToString().Trim();
                                string asdfas8 = myDs.Tables[0].Rows[i].ItemArray[7].ToString().Trim();
                                string asdfas9 = myDs.Tables[0].Rows[i].ItemArray[8].ToString().Trim();
                                string asdfas10 = myDs.Tables[0].Rows[i].ItemArray[9].ToString().Trim();
                                string asdfas11 = myDs.Tables[0].Rows[i].ItemArray[10].ToString().Trim();
                                string asdfas12 = myDs.Tables[0].Rows[i].ItemArray[11].ToString().Trim();
                                string asdfas13 = myDs.Tables[0].Rows[i].ItemArray[12].ToString().Trim();
                            }
                        }
                        Jscript.Alert("导入成功!");
                    }
                }            }
            catch
            {
                Jscript.Alert("导入失败!" + zf2);
            }
源码如上。

解决方案 »

  1.   

    不应该啊!
    但你其中有一个错误:
    for (int i = 0; i <= myDs.Tables[0].Rows.Count; i++)
    {}
    红色标记就为<
      

  2.   

    EXCEL 连接字符串 错误  加入 HDR=NO 试试
      

  3.   

    Excel连接字符串
    在以往读取Excel文件时常常出现读取某些字段为null值,其实是有值,原因是读取文件时,Excel会以第一行的数据类型为参考,如果后边的与其不一致,则会出现些问题。 
    以下一个朋友的解决方案,他的Excel文件的连接串写作如下。据说可以强制数据为字符串,具体我没有再测试。仅供参考。 
    string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sPath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'"; 
    其中红色的部分比较值得注意,HDR和IMEX一定要配合使用,HDR表示要把第一行作为数据还是作为列名,作为数据用hdr=no,作为列名用hdr=yes;通过Imex=1来把混合型作为文本型读取,避免null值。SSIS中的Excel Connection和其他的Connection不一样,用户不需要指定数据类型,Excel的driver可以先去做一个采样,然后根据结果去猜一下数据类型。 
      

  4.   

    http://www.cnblogs.com/yangbo108/archive/2007/08/10/850370.html
      

  5.   

    ASP.NET读写Excel数据DataTable导出成Excel文件:
     1public static void DataSetToExcel(DataSet p_dsExport,string p_strFileName,bool p_blnHaveHeaderText)
     2  {
     3   if (p_dsExport == null)
     4   {
     5    return ;
     6   }
     7   string strContext=GenerateWorkSheet(p_dsExport);
     8
     9   DownloadExcelFile(strContext,p_strFileName);
    10
    11  }
    12
    13public static string GenerateWorkSheet(DataSet p_dsExport)
    14        {
    15            System.Text.StringBuilder   strExcelXml=new System.Text.StringBuilder ();
    16            strExcelXml.Append(ExcelHeader());
    17            strExcelXml.Append(ExcelWorkSheetOptions()); 
    18            
    19
    20            foreach(DataTable dt in p_dsExport.Tables)
    21            {
    22                // Create First Worksheet tag
    23                strExcelXml.Append("<Worksheet ss:Name=\""+ dt.TableName +"\">");
    24                // Then Table Tag
    25                strExcelXml.Append("<Table>");
    26                strExcelXml.Append(GetHeaderText(dt));
    27                int intColCount=dt.Columns.Count;
    28                foreach(DataRow dr in dt.Rows)
    29                {
    30                    // Row Tag
    31                    strExcelXml.Append("<Row>\r\n");
    32                    for(int j=0;j<intColCount;j++)
    33                    {
    34                        // Cell Tags
    35                        strExcelXml.Append("<Cell ss:Index=\""+(j+1).ToString()+"\"><Data ss:Type=\"String\">");
    36                        strExcelXml.Append(System.Web.HttpUtility.HtmlEncode( ObjectToNullStr(dr[j]))); 
    37                        strExcelXml.Append("</Data></Cell>\r\n");
    38                    }
    39                    strExcelXml.Append("</Row>\r\n");
    40                    
    41                }
    42                strExcelXml.Append("</Table>");
    43                strExcelXml.Append("</Worksheet>"); 
    44            }
    45            strExcelXml.Append("</Workbook>\r\n");
    46            return strExcelXml.ToString();
    47        }
    48
    49private static void DownloadExcelFile(string p_strFileContext,string p_strFileName)
    50        {
    51            // Appending Headers            
    52            if (IsNullString(p_strFileName))
    53            {
    54                p_strFileName="Excel.xls";
    55            }
    56            
    57            if (!p_strFileName.Trim().ToLower().EndsWith(".xls"))
    58            {
    59                p_strFileName += ".xls";
    60            }
    61
    62            try
    63            {
    64                HttpContext.Current.Response.Clear();
    65                HttpContext.Current.Response.Buffer= true;
    66                p_strFileName = UrlEncode(p_strFileName);
    67                HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
    68                HttpContext.Current.Response.AppendHeader("content-disposition", "attachment; filename=" + p_strFileName);
    69            }
    70            catch
    71            {
    72            }
    73            
    74                                    
    75            //Writeout the Content                
    76            HttpContext.Current.Response.Write(p_strFileContext);
    77            try
    78            {
    79                HttpContext.Current.Response.End();
    80            }
    81            catch
    82            {
    83            }
    84            
    85        }
      

  6.   

    第一条被当做Excel的列名来处理,你当然读不到他了。