20180518VSTO多簿单表汇总

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

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

        }

        private void ButtonGather_Click(object sender, RibbonControlEventArgs e)
        {
            TimeSpan StartTime = new TimeSpan(DateTime.Now.Ticks);
            GatherDataTool.ThisWorkbook wb = Globals.ThisWorkbook;
            Excel.Worksheet sht =(Excel.Worksheet)wb.ActiveSheet;
            sht.Cells.Clear();
            Excel.Application xlApp = wb.Application;
            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)
            {
                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]);
                        }
                        openWb.Close(false, Type.Missing, Type.Missing);
                    }
                }
            }

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

            MessageBox.Show("汇总完成,耗时:" + duration.Seconds.ToString()+"秒!");
        }
    }
}

  

原文地址:https://www.cnblogs.com/nextseven/p/9057858.html

时间: 2024-11-05 18:45:25

20180518VSTO多簿单表汇总的相关文章

单表扫描,MySQL索引选择不正确 并 详细解析OPTIMIZER_TRACE格式

单表扫描,MySQL索引选择不正确 并 详细解析OPTIMIZER_TRACE格式 一 表结构如下:  MySQL  5.5.30  5.6.20 版本, 表大概有815万行 CREATE TABLE t_audit_operate_log (  Fid bigint(16) AUTO_INCREMENT,  Fcreate_time int(10) unsigned NOT NULL DEFAULT '0',  Fuser varchar(50) DEFAULT '',  Fip bigint

单表扫描,MySQL索引选择不正确 并 详细解析OPTIMIZER_TRACE格式

一 表结构如下:  MySQL  5.5.30  5.6.20 版本, 表大概有815万行 CREATE TABLE t_audit_operate_log (  Fid bigint(16) AUTO_INCREMENT,  Fcreate_time int(10) unsigned NOT NULL DEFAULT '0',  Fuser varchar(50) DEFAULT '',  Fip bigint(16) DEFAULT NULL,  Foperate_object_id big

SQLServer学习笔记<>.基础知识,一些基本命令,单表查询(null top用法,with ties附加属性,over开窗函数),排名函数

Sqlserver基础知识 (1)创建数据库 创建数据库有两种方式,手动创建和编写sql脚本创建,在这里我采用脚本的方式创建一个名称为TSQLFundamentals2008的数据库.脚本如下:   同时往数据库表插入一些数据,用户后续对数据库的sql的练习.在这里有需要的可以下载相应的脚本进行数据库的初始化.我放到百度云上面,请戳 我:http://yun.baidu.com/share/link?shareid=3635107613&uk=2971209779,提供了<Sqlserver

sql学习总结(3)——SQL单表查询技术

基本格式: select [all | distinct] select_list from table_list/view_list [where conditions] [group by group_list] [having conditions] [order by order_list] 例: select 职工号,姓名,工资 as 月工资,(工资*12+5000)/6 as 年奖金 from 职工 select *from 职工 where 仓库号 in (‘wh1’,’wh2’)

随便玩玩之PostgreSQL(第二章)单表数据查询

未经授权不得转载 第二章 单表数据查询数据库的基本功能就是数据增查改删,倘若不可以,要她还有什么意义.数据查询功能不仅仅是查询,而且还能筛选,并且格式化显示.数据查询使用SELECT语句,本章介绍如何使用SELECT查询(列出)数据库中的数据. 2.1查询数据库cj表中全部信息方法一:使用"*"通配符查询所有数据(所有字段数据). SELECT * FROM cj; 结果如图. 方法二:制定所有字段(列名).每个字段用逗号(,)隔开. SELECT id,kc,bj,xm,yw,sx,

单表查询、多表查询、虚拟表连接查询

  单表查询,以下面这个表为例:+----+------------+--------+-----+------------+----------------------------+--------------+------------+--------+-----------+| id | name | sex | age | hire_date | post | post_comment | salary | office | depart_id |+----+------------+-

Mysql的单表查询

MySQL单表查询 汇总 单表查询的语法及关键字执行的优先级 from 1.找到表:from where 2.拿着where指定的约束条件,去文件/表中取出一条条记录 group by 3.将取出的一条条记录进行分组group by,如果没有group by,则整体作为一组 select 4.执行select(去重) distinct having 5.将分组的结果进行having过滤 order by 6.将结果按条件排序:order by limit 7.限制结果的显示条数 简单查询 创建表

mysql单表限制

mysql单表的限制 一.MySQL数据库的MyISAM存储 引擎单表大小限制已经不是有MySQL数据库本身来决定(限制扩大到64pb),而是由所在主机的OS上面的文件系统来决定了. 在mysql5.0版本之前,myisam存储引擎默认表的大小4Gb,可以用一下命令来查看: [[email protected] test]# cd /data/mysql/mysql_3306/data/test [[email protected] test]# myisamchk -dv t2 MyISAM

集成代码生成器 单表 多表 树形表 一对多 springmvc spring mybatis SSM 后台框架

获取[下载地址]   QQ: 313596790   [免费支持更新] 三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] A 集成代码生成器 [正反双向(单表.主表.明细表.树形表,开发利器)+快速构建表单; QQ:313596790 freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块 B 集成阿里巴巴数据库连