我想把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;
}
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;
}
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);
int sheetcount = myexcel.Worksheets.Count ;
sheet.Copy (Type.Missing,myexcel.Worksheets [sheetcount]);
Excel.Worksheet sh = (Excel.Worksheet)myexcel.Worksheets[sheetcount+1];
这种方法试了,不行.这个问题不用在程序里写代码,就光是在电脑里打开EXCEL2003然后进行移动复制也会报"单元格格式太多,无法复制"的信息,用EXCEL2007打开这样操作就没有问题,不知道是不是EXCEL2003的BUG?