我是靠谱客的博主 文静手机,最近开发中收集的这篇文章主要介绍EXCEL 合并同样格式的多个excel文件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  • 在日常工作中我们经常会遇到有很多个相同格式的excel文件并需要将他们合并到一个文件中去,要是文件少还好办手动搞一下就好了,但是当需要合并的文件是几千几百个的时候呢?这时我们就需要一个可以自动把相同格式的excel文件合并到一个文件中的工具!
		private void MergeExcel()
        {
            string TileLine = textBox1.Text;
            if(TileLine=="")
            {
                MessageBox.Show("请输入标题的总行数!", "标题总行数为空!");//需要输入标题的总行数,因为格式相同的文件只需要一个标题就行了,只合并内容
            }
            else
            {
            
                Microsoft.Office.Interop.Excel.Application excel = new ApplicationClass();
                excel.ScreenUpdating = false; //停止工作表刷新
                excel.DisplayAlerts = false;
                Workbook workbook = excel.Workbooks.Add(Type.Missing);//合并到此表
                Workbook workbook2;
                Worksheet worksheet = (Worksheet)workbook.Sheets[1];
                worksheet.Name = "合并后表格";

                for (int i = 0; i < filename.Length; i++)
                {
                    workbook2 = excel.Workbooks.Open(filename[i]);
                    Worksheet worksheet2 = (Worksheet)workbook2.ActiveSheet;
                    if (i == 0)//标题只需要复制一遍
                    {
                        Range range;
                        range = (Range)worksheet.Cells[worksheet.Range["A65536", "A65536"].End[XlDirection.xlUp].Row, 1];
                        worksheet2.UsedRange.Copy(range);

                    }
                    else
                    {
                        Range range;
                        range = (Range)worksheet.Cells[worksheet.Range["A65536", "A65536"].End[XlDirection.xlUp].Row, 1];
                        worksheet2.UsedRange.Offset[TileLine].Copy(range);
                    }
                    workbook2.Close();
                   // PublicMethod.Kill(excel);//关闭excel进程
                }

                SaveFileDialog saveExcelDialog = new SaveFileDialog();
                saveExcelDialog.Filter = "Excel文件(*.xls;*.xlsx)|*.xls;*.xlsx|所有文件|*.*"; 
                string saveExcelPath="";
                if(saveExcelDialog.ShowDialog()==DialogResult.OK)
                {
                    saveExcelPath = saveExcelDialog.FileName;
                    workbook.SaveAs(saveExcelPath);//保存新建的excel到指定的路径中去
                    workbook.Close();
                    excel.Quit();
                    PublicMethod.Kill(excel);//关闭excel进程
                    MessageBox.Show("合并表格成功!");
                }
                else
                {
                    MessageBox.Show("保存失败!");
                    this.Close();
                }
                
               
            }
        }
 		private void SelectExcelFile()//打开对话框选取需要合并的文件
        {
            OpenFileDialog dialog = new OpenFileDialog();
            
            dialog.Filter = "Excel文件(*.xls;*.xlsx)|*.xls;*.xlsx|所有文件|*.*";
            dialog.Multiselect = true;
            
            if(dialog.ShowDialog()==DialogResult.OK)
            {
                filename = dialog.FileNames;
            }

        }

在程序完成后,打开合并表格的时候发现打不开,后面发现是程序运行时打开的excel进程还没有关闭,因此在程序结束时需要把进程关闭,以下关闭excel进程参考博客:https://blog.csdn.net/spw55381155/article/details/79891108depth_1utm_source=distribute.pc_relevant.nonetask&utm_source=distribute.pc_relevant.none-task

	public class PublicMethod//关闭excel进程
    {
        [DllImport("User32.dll", CharSet = CharSet.Auto)]//导入User32.dll中的函数
        public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID);//获取指定窗体的进程id
        public static void Kill(Microsoft.Office.Interop.Excel.Application excel)
        {
            IntPtr t = new IntPtr(excel.Hwnd);//得到这个句柄,具体作用是得到这块内存入口 

            int k = 0;
            GetWindowThreadProcessId(t, out k);   //得到本进程唯一标志k
            System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k);   //得到对进程k的引用
            p.Kill();     //关闭进程k
        }

    }

最后

以上就是文静手机为你收集整理的EXCEL 合并同样格式的多个excel文件的全部内容,希望文章能够帮你解决EXCEL 合并同样格式的多个excel文件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部