精华内容
下载资源
问答
  • 生活中经常会碰到多个excel表格汇总成一个表格情况,比如你发放了一份表格让班级所有同学填写,而你负责将大家结果合并成一个。诸如此类问题有很多。除了人工将所有表格内容一个一个复制到汇总表格里,那么...
  • 那其实也可以把多个工作表合并一个。 继续之前例子,我们把汇总表删除 如下 把表 1,2,3 合并到sheet5中 合并代码如下: Sub 合并当前工作簿下所有工作表() Application.ScreenUpdating = Fals...

    在上篇博客https://blog.csdn.net/whandgdh/article/details/100184090,讲到了把一个工作表拆分为多个,
    那其实也可以把多个工作表合并为一个。
    继续之前的例子,我们把汇总表删除
    如下
    在这里插入图片描述
    把表 1,2,3 合并到sheet5中

    合并代码如下:
    Sub 合并当前工作簿下的所有工作表()
    Application.ScreenUpdating = False
    For j = 2To Sheets.Count
     ' j=2表示 从第二个表中开始获取工作簿的所有工作表
    If Sheets(j).Name <> ActiveSheet.Name Then
    X = Range("A65536").End(xlUp).Row + 1
    Sheets(j).UsedRange.Copy Cells(X, 1)
    End If
    Next
    Range("B1").Select
    Application.ScreenUpdating = True
    MsgBox "当前工作簿下的全部工作表已经合并完毕!", vbInformation, "提示"
    End Sub
    

    同样进入sheet5的vba编程界面
    在这里插入图片描述
    放入代码并运行
    在这里插入图片描述
    运行结果如下图:
    在这里插入图片描述

    删除宏代码 然后保存
    在这里插入图片描述

    展开全文
  • 1、新建一个文件夹、将要合并的表格放到里面、新建一个表格、用excel打开、右击Sheet12、选择查看代码(PS:excel有着一项,WPS没有)3、将下列代码复制到文本框中:Sub 合并当前目录下所有工作簿全部工作表()Dim ...

    1、新建一个文件夹、将要合并的表格放到里面、新建一个表格、用excel打开、右击Sheet1

    2、选择查看代码(PS:excel有着一项,WPS没有)

    3、将下列代码复制到文本框中:

    Sub 合并当前目录下所有工作簿的全部工作表()

    Dim MyPath, MyName, AWbName

    Dim Wb As workbook, WbN As String

    Dim G As Long

    Dim Num As Long

    Dim BOX As String

    Application.ScreenUpdating = False

    MyPath = ActiveWorkbook.Path

    MyName = Dir(MyPath & "\" & "*.xls")

    AWbName = ActiveWorkbook.Name

    Num = 0

    Do While MyName <> ""

    If MyName <> AWbName Then

    Set Wb = Workbooks.Open(MyPath & "\" & MyName)

    Num = Num + 1

    With Workbooks(1).ActiveSheet

    .Cells(.Range("B65536").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)

    For G = 1 To Sheets.Count

    Wb.Sheets(G).UsedRange.Copy .Cells(.Range("B65536").End(xlUp).Row + 1, 1)

    Next

    WbN = WbN & Chr(13) & Wb.Name

    Wb.Close False

    End With

    End If

    MyName = Dir

    Loop

    Range("B1").Select

    Application.ScreenUpdating = True

    MsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示"

    End Sub

    4、点击运行、一段时间(取决于表格的大小和多少)后,合并完成了。

    展开全文
  • 业务场景:有一个文件夹“商户汇总”,文件夹中有32家分公司商户数据,分别存放在32个excel表(工作簿)中,现需要将32个工作簿合并成一个excel表。 实现代码: import pandas as pd import os pwd = r"G:\...

    python高效办公——多个工作簿合并成一个工作簿

    业务场景:有一个文件夹“商户汇总”,文件夹中有32家分公司的商户数据,分别存放在32个excel表(工作簿)中,现需要将32个工作簿合并成一个总的excel表。
    在这里插入图片描述

    实现代码:

    import pandas as pd
    import os
    pwd = r"G:\商户汇总"   #文件存放的路径(方法:找到对应文件夹按shift键鼠标右键-复制路径)
    df_list = []
    for path,dirs,files in os.walk(pwd):
        for file in files:
            file_path = os.path.join(path,file)                        
            df = pd.read_excel(file_path) 
            df_list.append(df)
    result = pd.concat(df_list)
    print(result)
    result.to_excel('result.xlsx',index=False)  #合并的excel表存放在python的根目录下。
    

    前提条件:
    1.需要合并的excel表需要放在同一个文件夹下;
    2.每个excel仅有一个工作表,且字段个数和顺序要相同。

    展开全文
  • 描述:把由html转换成的多个复杂Excel合并一个Excel多sheet样式 先上代码,封装汇总数据并赋值,然后生成汇总表,这里主要是根据需求生成相应Excel public void getReportData(HttpServletResponse response,...

    上篇记录到生成Excel,详情看:https://blog.csdn.net/BinshaoNo_1/article/details/114411487

    描述:把由html转换成的多个复杂Excel合并到一个Excel多sheet样式

    先上代码,封装汇总数据并赋值,然后生成汇总表,这里主要是根据需求生成相应的Excel

    public void getReportData(HttpServletResponse response, String startTime, String endTime) throws Exception {
            //忽略部分逻辑代码
            List<TempMonitor> tempMonitorList = baseMapper.getList(startTime, endTime);
            
            //合并后的Excel名称,总表sheet名称
            String filename = "汇总表";
            //操作粮温汇总表
            List<DailyReportVO> allReportList = new ArrayList<>();
    
            //sheetName集合
            StringJoiner sheetNames = new StringJoiner(",","","");
            sheetNames.add(filename);
            //初始顺序
            int intiValue = 2;
            StringJoiner sheetNamesSort = new StringJoiner(",","","");
            sheetNamesSort.add("1");
    
            //生成表格的地址集合
            StringJoiner result = new StringJoiner(",","","");
            //汇总表
            result.add(beetlProperties.getHtmlPathIn()+"\\"+filename+".xlsx");
            for (TempMonitor tempMonitor : tempMonitorList){
                //生成单个测试信息并生成表格,详见上一篇
                DailyReportVO dailyReport = htmlToExcel(response,tempMonitor);
                //加入到集合
                result.add(beetlProperties.getHtmlPathIn()+"\\"+tempMonitor.getDevId()+".xlsx");
                sheetNames.add(名称);
                sheetNamesSort.add(排序);
                intiValue++;
                //加入集合
                allReportList.add(dailyReport);
            }
            //汇总操作
            operateAllReport(response,allReportList);
    
    
            //合并
            generateManySheet(result.toString(),filename);
            //当天日期
            String format = LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE);
            String[] sheetNameArray = sheetNames.toString().split(",");
            String[] split = sheetNamesSort.toString().split(",");
    
            Integer[] integers = (Integer[]) ConvertUtils.convert(split, Integer.class);
    
            //下载
            downloadExcelByManySheet(response,beetlProperties.getHtmlPathIn()+"\\"+filename+".xlsx",filename+"_"+format+".xlsx",sheetNameArray,integers);
    
        }

    汇总操作方法,主要生成汇总单个表格(依据需求生成的单表):

    /**
         * 汇总操作,并生成Excel
         * @param response
         * @param allReportList
         */
        private void operateAllReport(HttpServletResponse response,List<DailyReportVO> allReportList) throws Exception {
            //最大层
            int maxLayer = 0;
            //单元格初始大小
            int initValue = 15;
            for (DailyReportVO report : allReportList){
                int layerSize = report.getLayerTempList().size();
                //取最大层
                if (maxLayer < layerSize){
                    maxLayer = layerSize;
                }
            }
            //赋值最大层
            allReportList.get(0).setStoreWay(String.valueOf(maxLayer));
            //合并单元格数量--总合并数量
            allReportList.get(0).setHum(String.valueOf((maxLayer-2)*3+initValue));
            //需要延伸的数量
            allReportList.get(0).setGrainOrigin(String.valueOf((maxLayer-2)*3));
            //数据导出
            String sheetName = "汇总表";
            String filePath = beetlProperties.getFilePathIn()+sheetName+".html";
    //详见上一篇         ExportHtmlUtil().generateFile(null,allReportList,filePath,sheetName,"/html/all.html.btl");
    
            
            htmlToExcelToStr(response, filePath, sheetName, "all");
        }

    合并生成的多个表格到同一个Excel:

    /**
         * 把生成的多个Excel合同一个,并生成Excel
         * @param result
         */
        private void generateManySheet(String result,String filename) throws IOException {
            String[] inputFiles = result.toString().split(",");
            //创建一个新的Excel文档
            XSSFWorkbook newExcelCreat = new XSSFWorkbook();
    
            for (String file : inputFiles){
                InputStream in = new FileInputStream(file);
                XSSFWorkbook fromExcel = new XSSFWorkbook(in);
                int length = fromExcel.getNumberOfSheets();
                //长度为1时
                if(length<=1){
                    XSSFSheet oldSheet = fromExcel.getSheetAt(0);
                    XSSFSheet newSheet = newExcelCreat.createSheet(oldSheet.getSheetName());
                    CopyWorkBookUtil.copySheet(newExcelCreat, oldSheet, newSheet);
                }else{
                    // 遍历每个sheet
                    for (int i = 0; i < length; i++) {
                        XSSFSheet oldSheet = fromExcel.getSheetAt(i);
                        XSSFSheet newSheet = newExcelCreat.createSheet(oldSheet.getSheetName());
                        CopyWorkBookUtil.copySheet(newExcelCreat, oldSheet, newSheet);
                    }
                }
    
            }
    
            try{
                FileOutputStream fileOut = new FileOutputStream(beetlProperties.getHtmlPathIn()+"\\"+filename+".xlsx");
                newExcelCreat.write(fileOut);
                fileOut.close();
                newExcelCreat.close();
            }catch (Exception e){
                log.error("合并异常:{}",e.getMessage());
            }
        }

    合并多个表格用到的方法:

    public class CopyWorkBookUtil {
        /**
         * Sheet复制
         * @param wb
         * @param fromSheet
         * @param toSheet
         */
        public static void copySheet(XSSFWorkbook wb, XSSFSheet fromSheet, XSSFSheet toSheet) {
            mergeSheetAllRegion(fromSheet, toSheet);
            // 设置列宽
            int length = fromSheet.getRow(fromSheet.getFirstRowNum()).getLastCellNum();
            for (int i = 0; i <= length; i++) {
                toSheet.setColumnWidth(i, fromSheet.getColumnWidth(i));
            }
            for (Iterator rowIt = fromSheet.rowIterator(); rowIt.hasNext();) {
                XSSFRow oldRow = (XSSFRow) rowIt.next();
                XSSFRow newRow = toSheet.createRow(oldRow.getRowNum());
                copyRow(wb, oldRow, newRow);
            }
        }
        /**
         * 行复制功能
         * @param wb
         * @param oldRow
         * @param toRow
         */
        public static void copyRow(XSSFWorkbook wb, XSSFRow oldRow, XSSFRow toRow) {
            toRow.setHeight(oldRow.getHeight());
            for (Iterator cellIt = oldRow.cellIterator(); cellIt.hasNext();) {
                XSSFCell tmpCell = (XSSFCell) cellIt.next();
                XSSFCell newCell = toRow.createCell(tmpCell.getColumnIndex());
                copyCell(wb, tmpCell, newCell);
            }
        }
        /**
         * 合并单元格
         * @param fromSheet
         * @param toSheet
         */
        public static void mergeSheetAllRegion(XSSFSheet fromSheet, XSSFSheet toSheet) {
            int num = fromSheet.getNumMergedRegions();
            CellRangeAddress cellR = null;
            for (int i = 0; i < num; i++) {
                cellR = fromSheet.getMergedRegion(i);
                toSheet.addMergedRegion(cellR);
            }
        }
    
        /**
         * 复制单元格
         * @param wb
         * @param fromCell
         * @param toCell
         */
        public static void copyCell(XSSFWorkbook wb, XSSFCell fromCell, XSSFCell toCell) {
            XSSFCellStyle newstyle = wb.createCellStyle();
            copyCellStyle(fromCell.getCellStyle(), newstyle);
            //  toCell.setEncoding(fromCell.getStringCelllValue());
            // 样式
            toCell.setCellStyle(newstyle);
            if (fromCell.getCellComment() != null) {
                toCell.setCellComment(fromCell.getCellComment());
            }
            // 不同数据类型处理
            int fromCellType = fromCell.getCellType();
            toCell.setCellType(fromCellType);
            if (fromCellType == XSSFCell.CELL_TYPE_NUMERIC) {
                if (XSSFDateUtil.isCellDateFormatted(fromCell)) {
                    toCell.setCellValue(fromCell.getDateCellValue());
                } else {
                    toCell.setCellValue(fromCell.getNumericCellValue());
                }
            } else if (fromCellType == XSSFCell.CELL_TYPE_STRING) {
                toCell.setCellValue(fromCell.getRichStringCellValue());
            } else if (fromCellType == XSSFCell.CELL_TYPE_BLANK) {
                // nothing21
            } else if (fromCellType == XSSFCell.CELL_TYPE_BOOLEAN) {
                toCell.setCellValue(fromCell.getBooleanCellValue());
            } else if (fromCellType == XSSFCell.CELL_TYPE_ERROR) {
                toCell.setCellErrorValue(fromCell.getErrorCellValue());
            } else if (fromCellType == XSSFCell.CELL_TYPE_FORMULA) {
                toCell.setCellFormula(fromCell.getCellFormula());
            } else { // nothing29
            }
    
        }
        public static void copyCellStyle(XSSFCellStyle fromStyle, XSSFCellStyle toStyle) {
    
            toStyle.cloneStyleFrom(fromStyle);
        }
    }
    public class XSSFDateUtil extends DateUtil {
    
    }

     

    到此,基本已经把复杂导出并把多个复杂导出合并到同一个表格完成,比较粗糙,目前只是实现了项目需求,并无优化,下篇记录一下导出数据的类型问题...

     

     

     

     

    展开全文
  • 或者将原安装目录中文件全部删除,再安装到另外一个不同文件目录也可以.或者查阅http://exceltools.5d6d.com/redirect.php?tid=83&goto=lastpost#lastpost ==============================================...
  • Excel新增工具集

    2011-12-20 09:30:27
    7、多个工作簿中的所有工作表或指定工作表相同位置(区域)求和:打开(复制)一个空白的汇总表,表格格式与要汇总的表相同,凡鼠标选定单元格连续或不连续区域将对所有表格做累加计算。 8、当前工作表中每行记录都...
  • Excel百宝箱

    2012-10-27 17:09:21
    一个教导和辅助利用Excel的工具 公农双历查询】:生成功能日历,可以查询所有节、假日和农历 【高级定位】:功能选择(查找)工具。可以选择大于某值或者小于某值或者在某范围之间值,文本定位时支持通配符。...
  • Excel百宝箱9.0无限制破解版

    热门讨论 2012-02-03 19:05:29
    合并到选区】:将一个单元格值合到一个区域中去,可以插入到原字符之前也可以插入到原字符之后 【可还原的合并居中】:合并数据时可以保留所有数据,可以随心所欲定义分隔符。还可以随时取消合并,还原所有数据 ...
  • Excel百宝箱2012是强大制表插件,当安装百宝箱后,如果您使用Excel 2003,则将产生【百宝箱】菜单,包括100多个子菜单;如果您使用Excel 2007或者2010,将产生【百宝箱】和【字符分离】两个功能区选项卡。另外,...
  • • 两个一维数组连接运算 • 使用两个一维数组构造二维数组 • 部门评价等级转换 • 使用MMULT 函数计算产品结构指数 • 产生1-10 自然数垂直序列和水平序列 • 等比例构造维循环数组 • SUMIF函数对产品产量...
  • EXCEL集成工具箱V6.0

    2010-09-11 01:44:37
    能将最多三个任意区域存储格(或列)内容按自定分隔符号连接成一个字符串写入指定存储格或新工作表中。可以生成含重复值与不含重复值并可选是否排序连接字符串。连接上万个字符只需短短1分钟即完成。 ...
  • 合并到选区】:将一个单元格值合到一个区域中去,可以插入到原字符之前也可以插入到原字符之后 【可还原的合并居中】:合并数据时可以保留所有数据,可以随心所欲定义分隔符。还可以随时取消合并,还原所有...
  • Excel VBA实用技巧大全 附书源码

    热门讨论 2010-10-08 18:59:24
    01015获取在Excel主窗口中一个窗口所能占有最大高度和宽度 01016获取当前打印机名称 01017获取MicrosoftExcel剩余内存 01018获取MicrosoftExcel的总内存 01019获取计算机被Excel占用内存 01020改变Excel窗口大小...
  • 11.5.5 禁用多个行字段分类汇总功能 233 11.5.6 禁用行总计 233 11.6 创建最终报表要处理一些问题 234 11.6.1 创建一个工作簿来保存报表 234 11.6.2 在空白报表工作表上创建摘要 235 11.6.3 填充...
  • 11.5.5 禁用多个行字段分类汇总功能 233 11.5.6 禁用行总计 233 11.6 创建最终报表要处理一些问题 234 11.6.1 创建一个工作簿来保存报表 234 11.6.2 在空白报表工作表上创建摘要 235 11.6.3 填充...
  • 11.5.5 禁用多个行字段分类汇总功能 233 11.5.6 禁用行总计 233 11.6 创建最终报表要处理一些问题 234 11.6.1 创建一个工作簿来保存报表 234 11.6.2 在空白报表工作表上创建摘要 235 11.6.3 填充...
  • 11.5.5 禁用多个行字段分类汇总功能 233 11.5.6 禁用行总计 233 11.6 创建最终报表要处理一些问题 234 11.6.1 创建一个工作簿来保存报表 234 11.6.2 在空白报表工作表上创建摘要 235 11.6.3 填充...
  • Excel通用工具2.2

    2005-12-02 10:36:26
    6、同一工作簿内工作表索引功能:当一个工作簿内工作表数量较时,可以使用这个功能方便地切换到任一张工作表<BR>??7、同一工作表内单元格索引功能:当工作表很大时,可以使用本功能,以便在一张工作表内按行或列...
  • 能将最多三个任意区域存储格(或列)内容按自定分隔符号连接成一个字符串写入指定存储格或新工作表中。可以生成含重复值与不含重复值并可选是否排序连接字符串。连接上万个字符只需短短1分钟即完成。 ...
  • 能将最多三个任意区域存储格(或列)内容按自定分隔符号连接成一个字符串写入指定存储格或新工作表中。可以生成含重复值与不含重复值并可选是否排序连接字符串。连接上万个字符只需短短1分钟即完成。 ...
  • 能将最多三个任意区域存储格(或列)内容按自定分隔符号连接成一个字符串写入指定存储格或新工作表中。可以生成含重复值与不含重复值并可选是否排序连接字符串。连接上万个字符只需短短1分钟即完成。 ...
  • 能将最多三个任意区域存储格(或列)内容按自定分隔符号连接成一个字符串写入指定存储格或新工作表中。可以生成含重复值与不含重复值并可选是否排序连接字符串。连接上万个字符只需短短1分钟即完成。 【隔行...
  •  实例077 使用正则表达式验证一个31天 93  实例078 使用正则表达式验证数字输入 94  实例079 使用正则表达式验证密码长度 95  实例080 使用正则表达式验证非零正整数 96  实例081 使用正则表达式验证...
  • 合并到选区】:将一个单元格值合到一个区域中去,可以插入到原字符之前也可以插入到原字符之后 【可还原的合并居中】:合并数据时可以保留所有数据,可以随心所欲定义分隔符。还可以随时取消合并,还原所有数据 ...
  • 实例077 使用正则表达式验证一个31天 实例078 使用正则表达式验证数字输入 实例079 使用正则表达式验证密码长度 实例080 使用正则表达式验证非零正整数 实例081 使用正则表达式验证非零负整数 3.6 ...
  • PyPDF2:一个可以分割,合并和转换 PDF 页面库。 ReportLab:快速创建富文本 PDF 文档。 Markdown Mistune:快速并且功能齐全纯 Python 实现 Markdown 解析器。 Python-Markdown:John Gruber’s ...

空空如也

空空如也

1 2 3 4
收藏数 74
精华内容 29
关键字:

多个excel合并成一个汇总的代码