最近和师傅在一起做一个公司内部的系统,可是今天遇到了一个问题,下午师傅弄了很久最后也没能成功。当然 这个不能怪师傅,这不是技术问题,而是出现的问题太诡异了。
我在网上找了许多资料 还是没能够解决,往大家能回答。using (OleDbExcelReader rdr = new OleDbExcelReader(FullExcelFileName))
            {
                foreach (OleDbExcelWorksheet ws in rdr.Worksheets)
                {
                  System.Diagnostics.Debug.Write(  ws.Name);
                }
                //OleDbExcelWorksheet wsheet = rdr.Worksheets["Sheet1"];
                OleDbExcelWorksheet wsheet = rdr.Worksheets["Sheet1"];
                uint columnCount = XmlUtility.GetColumnCount(FullSchemaName);
                IEnumerable<XElement> columnDefinitions = XmlUtility.GetColumnDefinitions(FullSchemaName);
                int column =1;
                string index, caption;
                foreach (var columnDefinition in columnDefinitions)
                {
                    index = columnDefinition.Attributes("Index").FirstOrDefault().Value;
                    if (!index.Equals(column))
                    {
                        OnColumnDefinitionValidation(new ColumnDefinitionEventArgs(int.Parse(index), column));
                    }
                    caption = columnDefinition.Attributes("Caption").FirstOrDefault().Value;
                    if (!wsheet.Cells[0, (uint)column].Value.ToString().Equals(caption))
                    {
                        OnColumnDefinitionValidation(new ColumnDefinitionEventArgs(caption, wsheet.Cells[0, (uint)column].Value.ToString()));
                    }
                    column++;
                }
            }上面加粗和变色那个就是出错的问题所在。
然后提示的问题是:
'Sheet1$'' is not a valid name.  Make sure that it does not include invalid characters or punctuation and that it is not too long.

解决方案 »

  1.   

    OleDbExcelWorksheet wsheet = rdr.Worksheets["Sheet1"];
    sheet页的名字错了?
    可能区分大小写吧
    改用sheet1试试
      

  2.   

    想当然了,默认应该是Sheet1
    总之这个错误像是sheet页名称问题
      

  3.   

    把其他的sheet表去掉,只留下一个试下
    当一个EXCEL文件有多个SHEET表,我的也是出现这样的情况。
      

  4.   

       OleDbExcelWorksheet wsheet = rdr.Worksheets["Sheet1"];
    => OleDbExcelWorksheet wsheet = rdr.Worksheets["Sheet1$"];
      

  5.   


    顶这个,对于excel貌似就要加上"$"