精华内容
下载资源
问答
  • excel文件合并
    千次阅读
    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;

    }

    更多相关内容
  • Excel文件合并工具.zip

    2021-07-30 13:40:40
    1.多个XLS或XLSX格式EXCEL文件合并,合并后可使用数据透视表进行相关操作。 2.自动合并多个EXCEL文件的第一个工作表,并汇总成一张表,可根据所有列标题需要指定需要的列。 3.可汇总标准的EXCEL表格及两行标题并有...
  • 主要为大家详细介绍了Python将多个excel文件合并为一个文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 将多个内容格式相同的Excel文件合并为一个文件 1、将相同文件放入统一个文件夹 2、双击运行软件选择文件夹 3、合并完成保存为文件“A合并结果表.xls” 适用于财务 绩效等高频率合并文件使用 直接使用的exe文件
  • 主要介绍了使用python将多个excel文件合并到同一个文件的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 好用的EXCEL文件合并的小程序,打开软件,选择excel文件,就可以自动合并
  • 怎么把100多个EXCEL文件合并成一个?_EXCEL_电脑软件_编程_天涯问答_天涯社区 http://wenda.tianya.cn/question/3604d101e5cb8330
  • 通过VBA将多个格式相同的Excel文件合并成一个文件,带文件处理
  • Excel文件合并

    2018-05-22 10:53:45
    本工具可以把各文件中WorkSheet全部合并到一个Sheet中,也可以把各文件中WorkSheet名相同的表格合并到一个Sheet中。
  • 将多个excel文件合并到一个excel的多个sheet中.pdf
  • Excel文件合并到一个文件中(多sheet形式),支持03-07office的excel文件 亲测好用哦
  • 倪大侠Excel文件合并器可以将多个Excel中的工作表合并到一个Excel文件中,支持按指定行或者全部行合并,本软件不限制文件数量,无需注册,免费使用。 倪大侠Excel文件合并器使用方法: 1、选择需要合并的Excel文件...
  • 一个可以将多个EXCEL文件合并到同一个文件EXCEL的宏插件
  • Excel文件合并工具使用说明 此工具主要用于多个Excel(xls或xlsx)文件的合并,若有N个Excel文件需要合并,但有些列是我们不需要的,且每个表展现的数据是不规律,如下图所示: 每个表的结构如下图所示: ...

    Excel文件合并工具使用说明

    此工具主要用于多个Excel(xls或xlsx)文件的合并,若有N个Excel文件需要合并,但有些列是我们不需要的,且每个表展现的数据是不规律,如下图所示:

    每个表的结构如下图所示:

    假如我们要实现如下图所示的效果:

    实现的方式可以有多种,如手动一个文件一个文件的打开、复制、粘贴;还可以用Power Query来完成(收费)等等,下面主要介绍这个工具如何来实现。

    第一步:启动软件。双击软件图标启动软件,启动后软件界面如下所示:

    软件中有“文件合并”、“非空数据提取”、“日志查看”三个菜单,“文件合并”主要用来合并Excel工作薄中的表数据,“非空数据提取”主要用来去除表数据中的空数据,“日志查看”主要是用于软件使用过程中产生的日志查看。

    第二步:根据“文件合并”界面由上而下设置好相关参数。

    单击上图中“选择文件目录”按钮选择Excel文件所在的目录

    选择好后如图所示

    后设置标题行位置,如下图所示

    这里的“2”是表格的标题在第二行

    接着输入需要合并的字段名称

    然后单击“选择存放路径”设置合并后的文件存在哪里

     

    设置好后如图所示

    第三步:单击“运行”按钮进行合并

     

    根据合并数据量耗时不同,根据测试合并5万条数据耗时大约为20秒,合并完成后提示如下所示

    第四步:打开之前设置的存放路径,查看结果(合并文件名为merge.xlsx)

    图中“merge_nonBlank.xlsx”为以“身份证”为关键字提取出来的非空数据,合并后“merge.xlsx”文件如下所示

    以“身份证”为关键字提取的非空数据“merge_nonBlank.xlsx”文件如下图所示:

    至此,数据合并工作全部完成!“非空数据提取”使用方法与此类似,只需从上至下设置好参数即可。

    数据合并完成后,请核对数据总量是否一致!

    我这里有58个工作薄,每个工作薄中有3张表,每张表有38条数据,所总数为:58*3*38=6612条数据,与合并后数据量一致。

    字段没有时会有如下提示

    字段重复时会有如下提示

    百度网盘下载
    Excel文件合并工具64位下载地址: https://pan.baidu.com/s/1MNNsS75xIpP-vAD7xFvPEA 提取码: 65wk 
    Excel文件合并工具32位下载地址: https://pan.baidu.com/s/1fLgKV1GTwIYlqMb1pADQhg 提取码: jjtq
    CSDN下载
    Excel文件合并工具64位下载地址:https://download.csdn.net/download/chenshunyuan6/79960125
    Excel文件合并工具32位下载地址:https://download.csdn.net/download/chenshunyuan6/79959994

    展开全文
  • 在excel中打开宏编辑器,导入这个文件,执行,然后选择多个excel文件,即可将多个excel文件合并为一个文件
  • 此工具可将多个EXCEL文件进行合并,包括每个EXCEL中的每个Sheet; 还可以选择合并时在开始的两列增加日期和序号,序号是自动生成的,日期是取每个文件的文件名的第2-9位(如文件名为M20180628.xlsx ,则日期为20180626...
  • Excel文件合并工具.rar

    2021-02-03 16:13:43
    日常工作中可以将多个EXCEL表格合并
  • 怎样把多个excel文件合并成一个

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

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

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

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

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

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

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

    展开全文
  • 其实我们可以把多个Excel文件合并成一个文件,这样方便阅读和编辑。那么如何合并多个Excel文件合并成一个且保留原有数据?阅读下文教程,我们一起来看下操作步骤吧。1、将需合并的Excel文件放在同一个文件夹中,并这...

    ‍     电脑在编辑Excel文件的时候会遇到大量的数据,比如客户资料,项目资料,材料整合等等,数据多且杂乱。其实我们可以把多个Excel文件合并成一个文件,这样方便阅读和编辑。那么如何合并多个Excel文件合并成一个且保留原有数据?阅读下文教程,我们一起来看下操作步骤吧。

    1、将需合并的Excel文件放在同一个文件夹中,并这个文件中新建一个Excel文件;

    52d981a4fb3ac59ad3df508e45bc26bd.png

    2、打开新建的Excel文件,按 Alt + F11 键,打开宏,选择视图→代码窗口;

    9ae081c9c1d4f1a845a4bb2488af23e9.png

    3、将下面的代码拷贝进去:

    01Sub sheets2one()

    02'定义对话框变量

    03Dim cc As FileDialog

    04Set cc = Application.FileDialog(msoFileDialogFilePicker)

    05Dim newwork As Workbook

    06Set newwork = Workbooks.Add

    07With cc

    08If .Show = -1 Then

    09Dim vrtSelectedItem As Variant

    10Dim i As Integer

    11i = 1

    12For Each vrtSelectedItem In .SelectedItems

    13Dim tempwb As Workbook

    14Set tempwb = Workbooks.Open(vrtSelectedItem)

    15tempwb.Worksheets(1).Copy Before:=newwork.Worksheets(i)

    16newwork.Worksheets(i).Name = VBA.Replace(tempwb.Name, ".xls", "")

    17tempwb.Close SaveChanges:=False

    18i = i + 1

    19Next vrtSelectedItem

    20End If

    21End With

    22Set cc = Nothing

    23End Sub

    复制代码

    d8f3fd54ca1000da403584ad9fd13260.png

    4、点击运行选项运行宏命令;

    920e28eec57c878ac8c98c5d29de3253.png

    5、之后弹出选择对话框,选择要批量合并的Excel名,确定即可;

    1a4c1824a566eb77efa606dae48c294a.png

    6、程序运行完毕后,会自动生成一个工作簿,工作簿内包含所有需合并的Excel文件,将工作簿另存为即可。

    955eef1b4375865f2910d0896835a98a.png

    电脑把多个Excel文件合并成一个文件的方法分享到这里了,合并后的Excel文档会献出多个Sheet页,我们可以很方便的切换。‍

    展开全文
  • 1、随便打开一个Excel文件,找到数据,找到合并表格,然后点击多个工作簿 2、点击添加文件 3、根据路径找到并且选择要汇总的Excel文件 4、选中要汇总的文件
  • python处理excel文件合并问题

    千次阅读 2022-03-27 11:10:38
    方法一: 使用xlsxwriter、openpyxl、xlrd包实现 ...#获取当前目录下所有文件列表 def getAllFiles(): excelList=[] currentPath=os.getcwd() fileList=os.listdir(currentPath) for...
  • Excel文件合并工具
  • 利用Python合并excel文件,思路很简单:1.选择所要合并的文件所在的文件夹;2.筛选出后缀为xls的文件;3.扫描所有excel文件的每一个sheet,将得到的数据存在list列表中;4.将所有sheet的数据写到当前文件夹中,并...
  • 将多个excel文件合并为:一个excel的多个sheet页【方法技巧】 大家平时在进行excel表格文件处理时,经常碰到需要多个excel文件合并成一个excel表格文挡,并且每个文档都保存在一个单独的sheet工作表中,一个一个的...
  • 将需要合并Excel文件放在一个文件夹中,新建一个空白的Excel,然后按F11+Alt,打开 Visual Basic Editor。右击左侧栏中的 ThisWorkbook 并选择插入>模块。 将下列代码插入到Code window中,然后点击运行,就...
  • 能把多个Excel文件合并到一个文件里,注意所有文件格式需要一样,文档里含有合并脚本,直接复制、粘贴到说明的地方,执行即可。简单好用,本人每次仓库大盘点都用此法。
  • Muti-Excel文件合并工具

    2022-08-08 16:34:45
    Muti-Excel文件合并工具

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 55,971
精华内容 22,388
关键字:

excel文件合并

友情链接: 41s1130b.zip