精华内容
下载资源
问答
  • 2021-03-17 19:00:36

    因工作需要,把上百个excel文件合并成一个excel文件。

    失败方案一:一个输入流 + 一个输出流,循环读取源文件然后直接写入目标文件。

    这种方案有个问题,流是无记忆的。同一个输入流,读取一个指针自动后移一位,但是不同的输入流,完全不知道上个流在做什么。最后的结果就是,目标文件的内容和循环中的最后一个源文件的内容相同....

    方案二:为了让写入Excel的内容是接着上一次的位置继续写入的,选择使用HSSFWorkbook。

    实现的思路是:在页面里,用户填写源文件地址、目标文件地址和目标文件名,提交后,后台先建立一个Excel目标文件,并且把目标文件和源文件都包装成HSSFWorkbook,然后迭代读取源文件的每个cell并将值存入到目标文件HSSFWorkbook对象中,最终数据写入到目标文件中。这样用户可以在填写的目标目标中找到合并文件。

    不过在用HSSFWorkbook包装新创建的.xlsx目标文件时遇到了一个小问题:Unable to read entire header; 0 bytes read; expected 512 bytes,就是说包装对象没有没有表头。

    问题语句:File file=File.createTempFile(targetPath+File.separator+fileName);

    FileInputStream fis = new FileInputStream(file);

    HSSFWorkbook targetWork = new HSSFWorkbook(fis);//出问题语句

    所以直接创建的.xlsx是不能用HSSFWorkbook包装的,这种办法也不行。

    方案三:在页面里,用户只填写源文件地址,提交后文件直接下载。后台不用再创建目标文件,直接把目标HSSFWorkbook对象写入到response流中。代码如下

    import org.apache.poi.hssf.usermodel.HSSFSheet;

    import org.apache.poi.hssf.usermodel.HSSFWorkbook;

    import org.apache.poi.ss.usermodel.*;

    import org.apache.poi.ss.util.CellRangeAddress;

    public void excelMerge(HttpServletResponse response, String sourcePath) throws Exception {

    // 创建HSSFWorkbook,暂时存放数据

    HSSFWorkbook targetWork = new HSSFWorkbook();

    HSSFSheet targetSheet = targetWork.createSheet("中石化预分配记录");

    targetSheet.setDefaultColumnWidth(20);

    targetSheet.setDefaultRowHeightInPoints(20);

    // 记录targetWork新建行位置

    int targetLineIndex = 0;

    // 获取样式集合

    Mapstyles = createStyles(targetWork);

    //设置标题行

    Row titleRow = targetSheet.createRow(targetLineIndex++);

    titleRow.setHeightInPoints(30);

    Cell titleCell = titleRow.createCell(0);

    titleCell.setCellStyle(styles.get("header"));

    titleCell.setCellValue("合并文件" + CreateOrderID.getOrderNo());

    targetSheet.addMergedRegion(new CellRangeAddress(titleRow.getRowNum(), titleRow.getRowNum(), titleRow.getRowNum(), 4));

    // 设置表头行

    Row headerRow = targetSheet.createRow(targetLineIndex++);

    headerRow.setHeightInPoints(16);

    ListheaderList = new ArrayList<>();

    headerList.add("卡号");

    headerList.add("时间");

    headerList.add("金额");

    headerList.add("余额");

    headerList.add("地址");

    for (int i = 0; i < headerList.size(); i++) {

    Cell cell = headerRow.createCell(i);

    cell.setCellStyle(styles.get("title"));

    cell.setCellValue(headerList.get(i));

    targetSheet.autoSizeColumn(i);

    }

    for (int i = 0; i < headerList.size(); i++) {

    int colWidth = targetSheet.getColumnWidth(i) * 5;

    targetSheet.setColumnWidth(i, colWidth < 3000 ? 3000 : colWidth);

    }

    HSSFWorkbook workbook;

    HSSFSheet sheet;

    File sourcePathFile = new File(sourcePath);

    for (File file : sourcePathFile.listFiles()) {

    if (file.isFile() && file.getName().endsWith(".xlsx")) {

    workbook = new HSSFWorkbook(new FileInputStream(file));

    sheet = workbook.getSheetAt(0);

    for (int i = 2; i < sheet.getLastRowNum(); i++) {

    Row sourceRow = sheet.getRow(i);

    Row targetRow = targetSheet.createRow(targetLineIndex++);

    for (int j = 0; j < sourceRow.getLastCellNum(); j++) {//Cell

    Cell cell = sourceRow.getCell(j);

    switch (cell.getCellType()) {

    case Cell.CELL_TYPE_BLANK:

    break;

    case Cell.CELL_TYPE_STRING:

    System.out.println();

    targetRow.createCell(j).setCellValue(cell.getStringCellValue());

    break;

    case Cell.CELL_TYPE_NUMERIC:

    targetRow.createCell(j).setCellValue(cell.getNumericCellValue());

    break;

    default:

    targetRow.createCell(j).setCellValue(cell.toString());

    }

    }

    }

    }

    }

    response.reset();

    response.setContentType("application/octet-stream; charset=utf-8");

    response.setHeader("Content-Disposition", "attachment; filename=" + Encodes.urlEncode("合并文件" + CreateOrderID.getOrderNo() + ".xlsx"));

    targetWork.write(response.getOutputStream());

    }

    // 工具方法,设置Excel表样式

    private MapcreateStyles(Workbook wb) {

    Mapstyles = new HashMap<>();

    CellStyle style = wb.createCellStyle();

    style.setAlignment(CellStyle.ALIGN_CENTER);

    style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);

    Font titleFont = wb.createFont();

    titleFont.setFontName("Arial");

    titleFont.setFontHeightInPoints((short) 12);

    titleFont.setBoldweight(Font.BOLDWEIGHT_BOLD);

    style.setFont(titleFont);

    styles.put("title", style);

    style = wb.createCellStyle();

    style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);

    style.setBorderRight(CellStyle.BORDER_THIN);

    style.setRightBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());

    style.setBorderLeft(CellStyle.BORDER_THIN);

    style.setLeftBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());

    style.setBorderTop(CellStyle.BORDER_THIN);

    style.setTopBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());

    style.setBorderBottom(CellStyle.BORDER_THIN);

    style.setBottomBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());

    Font dataFont = wb.createFont();

    dataFont.setFontName("Arial");

    dataFont.setFontHeightInPoints((short) 10);

    style.setFont(dataFont);

    styles.put("data", style);

    style = wb.createCellStyle();

    style.setAlignment(CellStyle.ALIGN_LEFT);

    style.cloneStyleFrom(styles.get("data"));

    styles.put("data1", style);

    style = wb.createCellStyle();

    style.cloneStyleFrom(styles.get("data"));

    style.setAlignment(CellStyle.ALIGN_CENTER);

    styles.put("data2", style);

    style = wb.createCellStyle();

    style.cloneStyleFrom(styles.get("data"));

    style.setAlignment(CellStyle.ALIGN_RIGHT);

    styles.put("data3", style);

    style = wb.createCellStyle();

    style.cloneStyleFrom(styles.get("data"));

    // style.setWrapText(true);

    style.setAlignment(CellStyle.ALIGN_CENTER);

    style.setFillForegroundColor(IndexedColors.GREY_50_PERCENT.getIndex());

    style.setFillPattern(CellStyle.SOLID_FOREGROUND);

    Font headerFont = wb.createFont();

    headerFont.setFontName("Arial");

    headerFont.setFontHeightInPoints((short) 16);

    headerFont.setBoldweight(Font.BOLDWEIGHT_BOLD);

    headerFont.setColor(IndexedColors.WHITE.getIndex());

    style.setFont(headerFont);

    styles.put("header", style);

    return styles;

    }

    更多相关内容
  • 怎么把100多个EXCEL文件合并成一个?_EXCEL_电脑软件_编程_天涯问答_天涯社区 http://wenda.tianya.cn/question/3604d101e5cb8330
  • 主要为大家详细介绍了Python将多个excel文件合并为一个文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 通过VBA将多个格式相同的Excel文件合并成一个文件,带文件处理
  • 现实生活中,不知道大家有没有遇上这样的时刻,...怎么将多个pdf文件合并成一个吧!中国有一句古话,叫做便宜无好货,便宜的东西往往会功能受限,质量受限,相信大家也明白这个道理吧?今天就不为大家介绍纯免费的...

    现实生活中,不知道大家有没有遇上这样的时刻,自己不会做pdf文件,于是就去网上找了一些素材,但是网上的素材都是零零散散的,但是我们又不知道应该如何才能将她们拼凑到一起。如果你也在为这样的问题而烦恼的话,下面,我们就来介绍一下免费pdf合并哪里有?怎么将多个pdf文件合并成一个吧!

    c2af8e1d6b3995ce5b4a072b9542e125.png

    中国有一句古话,叫做便宜无好货,便宜的东西往往会功能受限,质量受限,相信大家也明白这个道理吧?今天就不为大家介绍纯免费的合并PDF的方法了,为大家介绍一个操作简单,半免费的软件吧,这里推荐迅捷PDF转换器,有兴趣的朋友可以先去下载软件。

    打开软件,你会看到如下的这个界面,首先,我们点击界面上方的“PDF操作”。

    e2878953d5c735736e77270919b63e52.png

    点击之后,界面不会发生太大的变化,只有左侧的选项会有变化,我们点击其中的“PDF合并”。

    ad65e75570be05372c500879c5b3b259.png

    之后,我们看右侧空白处的上方,有一个“添加文件”,我们点击一下,然后将所有需要合并的PDF文件给添加进来。

    ab972b739a54a0a38011d37d6abfdd18.png

    添加之后我们注意一下,每个PDF文件的后面都有页码的选择,我们可以任意选择自己想要合并的页码,此外,后面的排序还可以改变合并的顺序。

    1f5d0d593852240a8f2aef8f406a22c3.png

    设置好了之后,点击“开始转换”就可以了。

    0650fda19165dabcf7742673e7114fca.png

    目前,迅捷PDF转换器可以支持5页pdf文件的合并,如果想要更多的页面合并的话,就需要开通VIP了,当然,这款软件的功能很强大的,即便是要开通VIP,也是很值得的!

    展开全文
  • 多个Excel合并成一个Excel表

    万次阅读 多人点赞 2019-06-30 17:38:04
    问题描述: 往往在进行数据统计分析前,会遇到数据分在不同的表里的情况,这时候就需要将多个表的数据先放到一个表的数据里面,然后再进行分析。比如班级需要汇总每个人的信息,几十人每个人都发了个人的信息表,一...

    一 使用说明

    问题描述: 往往在进行数据统计分析前,会遇到数据分在不同的表里的情况,这时候就需要将多个表的数据先放到一个表里面汇总,然后再进行分析。比如班级需要汇总每个人的信息,几十人每个人都发了个人的信息表给一个人进行统计,统计人员可以进行一个一个表打开粘贴到汇总表里,但是这样不仅麻烦,而且还可能出错,这种做法最简单粗暴但却很浪费时间的。当然,如果是大批量的数据使用python或者其他语言汇总到一个表里也是可行的,如果是小批量的几百个数据,敲代码有点大材小用,这时候excel本身就可以解决。
    使用条件:对多个同类型的excel数据表通过excel功能合并到一个excel表内。同类型是指每个一个excel表的表头都是一样的,里面的信息都是同类型的,比如表1、表2的内容分别是如下两张表的内容,可以看出两者的录入信息都是一样的。本excel是2016版的,其他版本应该都有该功能,但是具体的菜单栏内容可能会有小差异。
    表1
    表1
    表2
    表2

    二 使用方法

    1.数据处理:将要合并的数据统一放到一个文件夹内

    ps:本文的示例数据是从招生信息网站找的,内容和上文表1表2的格式相同,分别在四个excel表内,统一命名为表1,表2,表3,表4,并放在一个文件夹内,如下图所示。

    示例数据

    示例数据
    2.在文件夹内新建一个汇总表,也可以命名其他的名字,用来汇总各个表格的信息

    ps:本文的示例汇总表命名为汇总表,如下图所示

    新建汇总表
    汇总表
    3.打开汇总表表格,然后右击下方的sheet1按钮,会出现一个菜单,点击“查看代码”一栏,这时会出现VBA窗口
    点击查看代码一栏
    在这里插入图片描述
    VBA窗口
    在这里插入图片描述
    4.在弹出的代码框中粘贴如下代码,并点击按钮运行,运行完后会弹出运行结果对话框,点击确定即可

    Sub all_contents()
    
    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 & "个工作薄" 
    
    End Sub
    
    

    运行代码
    在这里插入图片描述
    运行结果对话框
    在这里插入图片描述
    5.返回原来的工作簿,可以看到数据汇总成果。但是却出现很多重复的表头,除了第一个表头,我们需要将其他多余的表头删除,当然,如果不怕麻烦,也可以选择一行一行的删除。如果想一次性处理,这时需要进行如下几步:
    (1)将表数据进行全选,点击“查找和选择”按钮,在查找文本框内输入要查找的内容,内容可以是表头中的任意一个列名进行输入,然后点击”查找全部“按钮(本文使用了“院校名称”进行查找,也可以使用“年份”或者“考生类别”或其他列名)

    查找对应的列
    在这里插入图片描述
    (2)查找的结果都会在查找框的下面全部列出来,对结果使用Ctrl+A全选,这时所有的内容都变蓝了。然后按住Ctrl键不放,点击第一个查询结果,这时第一行变白了,也就是没有选中。看一下表内的数据内容,可以看到,除了第一行的院校名称没有变色,其他行的院校名称都变成了灰色,或者说处于一种被同时选中的状态。
    选中的行
    在这里插入图片描述
    (3)选择任意一个灰色被选中的单元格,然后右击该单元格,会有菜单弹出,点击删除一栏,在弹出的窗口中按照“整行”的方式删除,然后点击确定即可。这时所有选中的内容对应的行全部删除,这时表头问题就算解决了,数据汇总完成。
    选中删除
    在这里插入图片描述
    按照行删除
    在这里插入图片描述
    删除后的结果表
    在这里插入图片描述

    三 另外一种合并方法

    这种方法得出来的数据有点像数据透视表的结果,而且需要一个个导入,也推荐使用,,具体好坏,还请自行鉴别使用

    1.源数据:不一定放在一个文件夹,一般考虑方便,放在一个文件夹里了,这里还使用原来的数据,可以新建一个汇总表。
    2.打开汇总表,首先点击选中A1单元格,然后在“数据“一栏中,选择“现有连接”功能,会弹出的窗口,在窗口左下角点击“浏览更多”
    现有连接窗口
    在这里插入图片描述
    3.这时需要选择数据源,对话框主要会按照如下步骤弹出:
    (1)数据源对话框:点击浏览更多后会弹出选择数据源对话框,在对话框左边找到源数据文件所在的路径,然后从路径里选择表1,点击右下角的打开按钮。

    数据源对话框
    在这里插入图片描述
    (2)选择表格对话框:点击打开后会出现选择表格对话框,在该对话框内的sheet1就是表1的表,如果表1工作簿内有两个sheet表,选择对应的sheet表就行,这里表1工作簿就一个sheet表,所以直接点击确定即可。
    选择表格对话框
    在这里插入图片描述
    (3)导入数据对话框:点击确定后出现导入数据对话框,显示方式选“表”就行,不用动,“现有工作表”一栏下面需要填写单元格,这里“$ A $ 1 是选择A1单元格开始粘贴,如果不从A1开始粘贴,可以自行选择其他起始单元格。选好单元格后,点击确定即可。这时表1的数据就录入成功了,如下图所示。

    导入数据对话框
    在这里插入图片描述
    录入的表1数据
    录入的表1数据
    4.如果需要导入其他表,重复1,2,3步即可,录入的四个表的结果如下图所示
    录入四个表的结果
    在这里插入图片描述
    5.这里发现仍然会出现很多重复的表头,按照第一种删除方法是无效的,处理方法为:首先将内容全选;然后将内容复制;新建一个sheet表,然后以文本的方式粘贴到另外一张sheet表里;最后按照上文第一种方法里删除重复表头的方式将重复表头删除,即为所获得的汇总表。

    展开全文
  • 怎样把多个excel文件合并成一个

    千次阅读 2021-12-19 06:12:43
    1、打开电脑,然后打开文件夹将这些excel文件都复制到一个文件夹下。注意,文件夹下不要有其他的excel文件;2、切换到【数据】菜单,点击【新建查询】,选择【从文件】下的【从文件夹...6、这时就完成了多个excel文...

    1、打开电脑,然后打开文件夹将这些excel文件都复制到一个文件夹下。注意,文件夹下不要有其他的excel文件;

    2、切换到【数据】菜单,点击【新建查询】,选择【从文件】下的【从文件夹】;

    3、接下来输入刚刚的文件夹路径,找到并点击【确定】选项;

    4、然后会出现一个新的页面,接着找到并点击【合并】下的【合并和加载】选项;

    5、选择要合并的工作表名称,最后点击【确定】选项;

    6、这时就完成了多个excel文件的合并。从筛选菜单中可以看到本例中的4个文件都这一份表格中。

    展开全文
  • 对于不熟悉Excel公式,不熟悉vba的人,要如何按需要快速把多个excel合并成一个excel表? 下面介绍两款在线工具,一键解决excel表合并的问题,不在需要使用Excel公式或者vba。 工具地址:http://www.excelfb.com/...
  • 【将多个Excel合并成一个Excel】

    千次阅读 2022-03-09 13:29:21
    多个Excel合并成一个Excel一、新建一个Excel(.xlsx)二、选择要合并的 excel所在的文件夹三、点击确定,正常情况下就完成了! 看 八四、出现报错五、点击 “ 高级编辑器 ” →“ 转换示例文件 ”六、将红框处连带...
  • XLS 文件合并,可以批量合并成一表,然后可以设置统一的页眉页脚——,
  • 运用Power Query插件步骤:1、在该插件选项下点击 从文本—从文件夹2、选择储存excel...=Excel.Workbook([Content],true) (PS:全英语状态下,大小写一定要注意),最后点击 确定7、在表内容列右上角那两箭头处左键...
  • 我们需要把多个excel表都放在同一个文件夹里面,并在这个文件夹里面新建一个excel。如图所示: 接下来我们打开新建excel表格,按快捷键Alt+F11进入图示界面,或右键单击sheet1,找到“查看代码”。 然后我们双击箭头...
  • 1/6下载安装“迅捷PDF转换器”2/6点击图标进入软件主界面3/6在左侧点击“PDF的其他操作”4/6选择“PDF合并”5/6将所需合并的两pdf文件拖拽至窗口6/6点击“开始转换”即可。...
  • Excel是我们日常办公经常要用到的工具,有时候我们会制作非常多的Excel表格,为了方便管理,我们需要将这些表格合并到一起,那么如何将多个excel表格合并成一个呢?相信很多朋友都不太清楚,那么今天小编就针对此...
  • 应用场景:使用pandas把多个相同结构的Excel文件合并为一个。 原始数据:   相关代码: import os import pandas as pd # 将文件读取出来放一个列表里面 pwd = 'test' # 获取文件目录 # 新建列表,存放文件名 ...
  • 如何快速把多个excel表格合并成一个excel表呢?首先,我们需要把多个excel表都放在同一个文件夹里面,并在这个文件夹里面新建一个excel文件。用microsoft excel打开新建的excel表,并右键单击sheet1,或者按ALT+F11...
  • 多个EXCEL文件合并成一个文件,刚刚用过,简单实用,希望大家够喜欢这个小的程序。
  • 其实我们可以把多个Excel文件合并成一个文件,这样方便阅读和编辑。那么如何合并多个Excel文件合并成一个且保留原有数据?阅读下文教程,我们一起来看下操作步骤吧。1、将需合并的Excel文件放在同一个文件夹中,并这...
  • 修改了两地方 1、原始表格有错误,打开会报错。优化1会自动忽略报错对表格进行合并。 2、表格格式包含不同种类的文件,如“.xls”和“.xlsx”。优化2会将后缀为“.xlsx”的也进行合并。 sub 合并当前目录下所有...
  • 其实常见的有2种场景场景一:多个Excel文件需要合并为1个Excel文件(多个工作簿合并为1个工作簿)场景二:1个Excel文件种有多个工作表,需要合并为1个工作表首先来看下,场景一(多个Excel文件合并为1个文件),都有哪些...
  • 主要介绍了Python合并多个Excel数据的方法也就是说将多个excel中的数据合并到另一个表中,本文通过实例代码相结合的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
  • 怎么把多个excel文件合并成一个新建一个BOOK文件,按Alt F11这二个键,VBA编辑界面,点击编辑的菜单:“插入”--“”,然后在里面完整复制下面的代码:Sub 同一文件夹多xls合并()'Sub mergeonexls() '合并多工作簿中...
  • 我们重要的合同文档一般都是PDF格式的,而且合同一般含有非常的附件,如果把份附件合并成一份,该如何操作呢?往下看↓↓↓↓PDF文档合并方法一step1:使用编辑器打开PDF文档,点击编辑器左边的“导航面板-页面...
  • 直接利用Excel软件自带的合并功能比较简单。 新建Excel文件,在sheet查看代码中,添加代码: Sub 合并当前目录下所有工作簿的全部工作表() Dim MyPath, MyName, AWbName Dim Wb As workbook, WbN As String Dim G...
  • 如何将多个Excel合并成一个

    万次阅读 2020-04-01 01:57:40
    准备数据,业务报告汇总.xlsx是新建的一空白的表格,sum文件夹里放的是需要汇总的数据格式是一模一样的,如下图: 分两种方法: 一 excel图形化操作 1 业务报告汇总文件 2 点击数据--点击新建查询--...
  • Q760776.zip 如何利用c#控制台应用程序将多个excel文件合并成一个excel文件 https://ask.csdn.net/questions/760776
  • 有时在收集资料时,找到多个可用的文档,则需要将这些PDF文档合并成一个单独的文件使用。目前市面上合并PDF的软件也很多,但考虑到下载安装费时还不安全,下面介绍一种在线就能完成PDF合并的方法。1、打开百度输入...
  • 代码如下,可以新建一wsf文件,在java中调用。 <job id="copysheet"> <reference guid="{00020905-0000-0000-C000-000000000046}" comment="MSWord 2000 tag library, under HKEY_CLASSES_ROOT\TypeLib\...
  • Java使用POI实现多个excel合并成一个excel。 (1)使用技术 编程语言:Java 依赖jar包:poi poi组件下载地址:https://archive.apache.org/dist/poi/release/bin/ (2)代码实现 实现思路: excel操作主要有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,150
精华内容 1,660
关键字:

多个excel数据合并成一个