各位大侠下午好:小弟在把多个由水晶报表导出的excel文件合并到一个excel文件的时候发现有一下问题:图片和表格重叠在一起,也就是说报表的图形遮住了表格文字。如果我分别创建几个excel文件,每个文件里都有图片和文字。用同样的方法(代码如下)却没有问题(图片和文字是分开的)。请问各位大哥该如何解决这一问题。多谢!!!
private void MergeExcelFiles(string fileName, System.Collections.ArrayList 
files)
{
Excel.Application exlApp = new Excel.ApplicationClass();

exlApp.Application.SheetsInNewWorkbook = 1;
Excel.Workbook excelWorkBook = 
exlApp.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
excelWorkBook = exlApp.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
Excel.Worksheet excelWorkSheet = 
(Excel.Worksheet)excelWorkBook.ActiveSheet;
excelWorkBook.Saved = true;
excelWorkBook.SaveCopyAs(fileName);
excelWorkBook.Close(null, null, null);
excelWorkBook = null;
excelWorkSheet = null;

exlApp.Application.Visible = false;
exlApp.Application.AlertBeforeOverwriting = false; object missing = System.Reflection.Missing.Value;
Excel.Workbook wkBookDest;
Excel.Workbook wkBookOrign;

try
{
wkBookDest = exlApp.Workbooks.Open(fileName, 
missing, false, missing, missing, missing,
missing,missing, missing,true, missing,
missing, missing, missing, missing);
for(int i=0; i< files.Count; i++)
{

string OrignfileName = files[i].ToString();

wkBookOrign = exlApp.Workbooks.Open(OrignfileName,
missing, true, missing, missing, missing,
missing, missing, missing, false, missing, 
missing, missing, missing, missing);
int nOrignSheetsCount = wkBookOrign.Worksheets.Count;
int nDestSheetsCount = wkBookDest.Worksheets.Count; Excel.Worksheet wkSheetDest; wkSheetDest = wkBookDest.Worksheets.Add(missing, 
wkBookDest.Worksheets[nDestSheetsCount], 
nOrignSheetsCount, 
Excel.XlSheetType.xlWorksheet) as Excel.Worksheet;
for(int j=1; j<= nOrignSheetsCount; j++)
{
Excel.Worksheet wkSheetOrign = wkBookOrign.Worksheets[j] as 
Excel.Worksheet;

wkSheetDest = wkBookDest.Worksheets[nDestSheetsCount + j] as 
Excel.Worksheet;
wkSheetDest.Activate();
wkSheetDest.Name = GetSheetName(OrignfileName);
Excel.Range range = 
wkSheetOrign.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell, missing); int nRow = range.Row;
int nColumn = range.Column;

Excel.Range rngOrign = 
wkSheetOrign.get_Range(wkSheetOrign.Cells[1,1],wkSheetOrign.Cells[nRow, 
nColumn]);

Excel.Range rngDest = wkSheetDest.get_Range(wkSheetDest.Cells[1,1], 
wkSheetDest.Cells[nRow, nColumn]);

rngOrign.Copy(missing);
wkSheetDest.Paste(rngDest, missing);
wkBookDest.Save();
}
wkBookOrign.Close(false, null, null);
} Excel.Worksheet temp = (Excel.Worksheet)(wkBookDest.Worksheets[1]);
temp.Delete();
temp = null; wkBookDest.Save();
wkBookDest.Close(null, null, null);
}
catch(Exception ex)
{
CommonModule.Functions.ShowErrorMessageBox(ex.Message, "保存错误");
}
finally
{
wkBookDest = null;
wkBookOrign = null;
exlApp.Quit();
exlApp = null; GC.Collect();
} CommonModule.Functions.DeleteTempFiles();
}
private string GetSheetName(string fullName)
{
string fileName = new System.IO.FileInfo(fullName).Name;
int index = fileName.IndexOf(".");
string sheetName = fileName.Substring(0, index);
return sheetName;
}