1. 程式人生 > >20180518VSTO多簿單表匯總外接程序按鈕

20180518VSTO多簿單表匯總外接程序按鈕

dialog long ear picker clas sin PE forms tools

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Tools.Ribbon;
using System.Diagnostics;
using Excel = Microsoft.Office.Interop.Excel;
using Office = Microsoft.Office.Core;
using System.Windows.Forms;
using System.IO;

namespace GatherData
{
    public partial class Ribbon1
    {
        private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
        {

        }

        private void ButtonGather_Click(object sender, RibbonControlEventArgs e)
        {
            Excel.Application xlApp = Globals.ThisAddIn.Application;
            
            Excel.Workbook wb = xlApp.ActiveWorkbook;
            Excel.Worksheet sht = (Excel.Worksheet)wb.ActiveSheet;
            sht.Cells.Clear();
            TimeSpan StartTime = new TimeSpan(DateTime.Now.Ticks); ;
            xlApp.ScreenUpdating = false;
            xlApp.DisplayAlerts = false;
            Excel.Workbook openWb;
            Excel.Worksheet openSht;
            Excel.Range rng;
            int index = 0;
            Office.FileDialog fd = xlApp.FileDialog[Office.MsoFileDialogType.msoFileDialogFolderPicker];
            fd.InitialFileName = xlApp.ActiveWorkbook.Path;
            if (fd.Show() == -1)
            {
                StartTime = new TimeSpan(DateTime.Now.Ticks);
                string folderPath = fd.SelectedItems.Item(1);
                string[] filePaths = Directory.GetFiles(folderPath, "*.xls*");
                foreach (string filepath in filePaths)
                {
                    if (filepath != wb.FullName)
                    {
                        // Debug.Print(filepath);
                        index++;
                        openWb = xlApp.Workbooks.Open(filepath);
                        openSht = openWb.Worksheets[1];
                        long endrow = openSht.Cells[openSht.Rows.Count, 3].End(Excel.XlDirection.xlUp).Row;
                        if (index == 1)
                        {
                            rng = openSht.Range[openSht.Cells[1, 1], openSht.Cells[endrow, 17]];
                            rng.Copy(sht.Cells[1, 1]);
                        }
                        else
                        {
                            rng = openSht.Range[openSht.Cells[3, 1], openSht.Cells[endrow, 17]];
                            long nextRow = sht.Cells[sht.Rows.Count, 1].End(Excel.XlDirection.xlUp).Row + 1;
                            rng.Copy(sht.Cells[nextRow, 1]);
                        }

                        xlApp.StatusBar = "正在匯總第" + index + "個文件,請耐心等候!";

                        openWb.Close(false, Type.Missing, Type.Missing);
                    }
                }
            }

            xlApp.ScreenUpdating = true;
            xlApp.DisplayAlerts = true;
            xlApp.StatusBar = false;
            TimeSpan EndTime = new TimeSpan(DateTime.Now.Ticks);
            TimeSpan duration = StartTime.Subtract(EndTime).Duration();

            MessageBox.Show("匯總完成,耗時:" +duration.Minutes.ToString()+"分"+ duration.Seconds.ToString() + "秒!");









        }
    }
}

  

20180518VSTO多簿單表匯總外接程序按鈕