我想把sheetViewNameList集合中的EXCEL文件(已生成)合并到另一个新工作簿wkb中,这里的需要合并的EXCEL文件里面格式几乎一样,仅是内容有区别,EXCEL文件一般有100列,500行左右的数据.里面部分CELL的内容是设了保护的,即Locked=true,现在在合并执行下面代码的时候,在EXCEL2003的情况下,当sheetViewNameList里面的文件记录接近100个时,运行到最后一个文件的COPY方法时会抛出"文件格式太多,无法复制"的异常,在EXCEL2007下面就没有问题,不知有没有朋友知道这是什么问题?该怎么解决?
                    foreach (string file in sheetViewNameList)
                    {
                        Excel.Workbook wkbFrom = appcls.Workbooks.Open(file, missing, missing,
                                                      missing, missing, missing, missing,
                                                      missing, missing, missing, missing,
                                                      missing, missing);
                        Excel.Worksheet wst = null;                        for (int i = 1; i <= wkbFrom.Sheets.Count; i++)
                        {
                            try
                            {
                                wst = (Excel.Worksheet)(wkbFrom.Sheets.get_Item(i));
                                //运行到差不多100个文件的时候,这里会出异常
                                wst.Copy(missing, wkb.Worksheets[wkb.Worksheets.Count]);
                            }
                            catch (Exception)
                            {
                                continue;
                            }
                        }
                        wst = null;
                        wkbFrom.Close(false, missing, missing);
                        wkbFrom = null;
                    }

解决方案 »

  1.   

    通过选定范围copy看看
     Excel.Range FromRange = myexcel.get_Range(myexcel.Cells[row,1],myexcel.Cells[row+1,5]);
      
     Excel.Range ToRange = myexcel.get_Range(myexcel.Cells[i+row,1],myexcel.Cells[i+row+1,5]);
     FromRange.Copy(ToRange);
      

  2.   

    Excel.Worksheet sheet = (Excel.Worksheet)myexcel.Worksheets[sheetname];
    int sheetcount = myexcel.Worksheets.Count ;
    sheet.Copy (Type.Missing,myexcel.Worksheets [sheetcount]);
    Excel.Worksheet sh = (Excel.Worksheet)myexcel.Worksheets[sheetcount+1];
      

  3.   


    这种方法试了,不行.这个问题不用在程序里写代码,就光是在电脑里打开EXCEL2003然后进行移动复制也会报"单元格格式太多,无法复制"的信息,用EXCEL2007打开这样操作就没有问题,不知道是不是EXCEL2003的BUG?
      

  4.   

    问题调查出来了,是因为微软限制EXCEL2003每个工作簿的最大CELL格式为4000种,而EXCEL2007为64000种,所以在2003上会有问题,但是我需要合并的文件里面超过64000种的可能性很大,所以现在想通过判断WORKBOOK的CELL格式的种类是否达到4000或者64000来分EXCEL存储,不知道有没有获取WORKBOOK或者WORKSHEET中CELL格式种类数量的函数或者属性,这个还需要去调查,如果有大侠知道请告诉我,或者可以提供其他方法解决问题
      

  5.   

    自己顶一下,没有人知道么?我查了EXCEL帮助文档也没找着如何获得CELL格式数量的属性或方法