Excel中Sheet复制

此工具通过C#实现多个Excel文件的指定工作表合并为一个文件的功能。程序首先创建一个新的工作簿,然后依次打开每个源文件并复制所有工作表到新工作簿中(除了第一个工作表)。最后保存为指定的目标文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        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;
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值