您的位置:首页 > 其它

Excel中Sheet复制

2009-07-30 16:40 447 查看
public static bool MergeSheet(string fileName, List<string> sheetViewNameList,ref string message)
{
if (sheetViewNameList!=null&&sheetViewNameList.Count>0)
{
ApplicationClass appcls = new ApplicationClass();
Workbook wkb = null;
object missing = System.Reflection.Missing.Value;
appcls.DisplayAlerts = false;
appcls.Visible = false;
try
{
//新建一工作簿
wkb = appcls.Workbooks.Add(XlSheetType.xlWorksheet);
bool canDelete = true;
foreach (string file in sheetViewNameList)
{
Workbook wkbFrom = appcls.Workbooks.Open(file, missing, missing,
missing, missing, missing, missing,
missing, missing, missing, missing,
missing, missing);
Worksheet wst = null;

for (int i = 1; i <= wkbFrom.Sheets.Count; i++)
{
wst = null;
//取得sheet
wst = (Excel.Worksheet)(wkbFrom.Sheets.get_Item(i));
//将sheet复制到工作簿中
wst.Copy(missing, wkb.Worksheets[wkb.Worksheets.Count]);
if (canDelete)
{
//将第一个sheet即sheet1删除
((Worksheet)wkb.Worksheets.get_Item(1)).Delete();
canDelete = false;
}
}
wst = null;
wkbFrom.Close(missing, missing, missing);
wkbFrom = null;
}
//选择第一个Sheet
((Worksheet)wkb.Worksheets.get_Item(1)).Select(missing);
//保存工作簿
wkb.SaveAs(fileName, XlFileFormat.xlWorkbookNormal, missing, missing, missing, missing,
Excel.XlSaveAsAccessMode.xlNoChange, missing, missing, missing, missing);
return true;
}
catch (Exception ex)
{
message = ex.Message;
foreach (string filefrom in sheetViewNameList)
{
//源文件删除

FileInfo fileInfo = new FileInfo(filefrom);
if (fileInfo.Exists)
{
//只读属性先设置成普通属性再删除
fileInfo.Attributes = FileAttributes.Normal;
fileInfo.Delete();
}
}
return false;
}
finally
{
if (appcls != null)
{
appcls.Quit();
Marshal.FinalReleaseComObject((Object)appcls);
}
appcls = null;
wkb = null;
}
}
else
{
return false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: