精华内容
下载资源
问答
  • 1.打开演示文件要求将表格数据拆分开并且保留标题行 2.首先我们点击下图选项 3.点击【汇总拆分】-【拆分工作表】 4.将【表头行数】设置为3, 5.将【关键词所在列】设置为B 6....

    今天跟大家分享一下excel表格怎么拆分并保留

    1.打开演示文件要求将表格数据拆分开并且保留标题行

    2.首先我们点击下图选项

    3.点击【汇总拆分】-【拆分工作表】

    4.将【表头行数】设置为3,

    5.将【关键词所在列】设置为B

    6.最后我们点击【确定】即可完成

    7.完成效果如下图

    展开全文
  • 在工作中,经常需要处理excel文件,将提供的excel文件导入数据库,有时候文件太大我们就需要做拆分了,下面实现将xlsx文件和xls文件按行数拆分,每个文件都保留标题行。这篇文件接着拆分csv大文件进行说明。 二、...

    一、背景

    在工作中,经常需要处理excel文件,将提供的excel文件导入数据库,有时候文件太大我们就需要做拆分了,下面实现将xlsx文件和xls文件按行数拆分,每个文件都保留标题行。这篇文件接着拆分csv大文件进行说明。

    二、后端代码

    1、我们需要引入poi的依赖

            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>4.0.1</version>
            </dependency>
            <!-- 07版本以后的格式 -->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>4.0.1</version>
            </dependency>

    2、拆分xls类型的文件方法

    (1)参数inputStream为要拆分的文件流

    (2)参数fileName为拆分文件名

    (3)参数splitSize为拆分后每个文件的最大行数

    (4)思路:根据前端传的excel文件流转换为一个Workbook文件,创建Workbook文件目的就是能够更好的操作excel,然后获取总行数,根据传到splitSize计算出需要创建几个excel文件,然后创建需要的若干个空excel放入list集合中,遍历原始excel,遍历时有行,单元格的概念,这个poi都能够操作,原始文件第一行的所有单元格都遍历到每个拆分文件的第一行,其余行随机往拆分文件里面一行一行的写,写到最后,将拆分文件集合中的Workbook文件写入存放拆分文件的目录中,关流。

       /**
         * 拆分xls文件并返回文件夹路径
         * @param inputStream
         * @param fileName
         * @param splitSize
         * @return
         */
        public static String getXlsZipPath(InputStream inputStream, String fileName, int splitSize) {
            StopWatch stopWatch = new StopWatch();
            stopWatch.start();
            Workbook workBook = null;
            try {
                workBook = WorkbookFactory.create(inputStream);
            } catch (Exception e) {
                logger.error("Load excel file error!", e);
                return null;
            }
            try {
                Sheet sheet = workBook.getSheetAt(0);
                Iterator<Row> rowIterator = sheet.rowIterator();
                int totalRows = sheet.getPhysicalNumberOfRows();
                int splitNumber = (int) ((totalRows % splitSize == 0) ? (totalRows / splitSize) : (totalRows / splitSize + 1));
                logger.info("xls文件总行数: {}行  拆分文件个数:{}个", totalRows, splitNumber);
                List<HSSFWorkbook> hssfWorkbooks = new ArrayList<>();
                //创建存放拆分文件的目录,文件夹存在,可能里面有内容,删除所有内容
                File dir = new File(defaultDir + fileName);
                if (dir.exists()) {
                    delAllFile(dir.getAbsolutePath());
                }
                dir.mkdirs();
                //创建的拆分文件写入流并放入集合中
                for (int count = 0; count < splitNumber; count++) {
                    HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
                    hssfWorkbook.createSheet().createRow(0);
                    hssfWorkbooks.add(hssfWorkbook);
                }
                int oldRow = 0;
                while (rowIterator.hasNext()) {
                    Row row = rowIterator.next();
                    if (row.getRowNum() == 0) {
                        oldRow++;
                        Iterator<Cell> cellIterator = row.cellIterator();
                        int index = 0;
                        while (cellIterator.hasNext()) {
                            Cell next = cellIterator.next();
    //                        解决获取excel数据的方法与实际类型不符
                            next.setCellType(CellType.STRING);
                            String value = next.getStringCellValue();
                            for (int count = 0; count < splitNumber; count++) {
                                HSSFRow row1 = hssfWorkbooks.get(count).getSheetAt(0).getRow(0);
                                row1.createCell(index).setCellValue(value);
                            }
                            index++;
                        }
                    }
                    if (row.getRowNum() != 0) {
                        Iterator<Cell> cellIterator = row.cellIterator();
                        HSSFWorkbook hssfWorkbook = hssfWorkbooks.get(oldRow % splitNumber);
                        HSSFSheet sheet1 = hssfWorkbook.getSheetAt(0);
                        int index = 0;
                        HSSFRow row1 = sheet1.createRow(sheet1.getLastRowNum() + 1);
                        while (cellIterator.hasNext()) {
                            Cell next = cellIterator.next();
                            next.setCellType(CellType.STRING);
                            String value = next.getStringCellValue();
                            row1.createCell(index++).setCellValue(value);
                        }
                        oldRow++;
                    }
                }
                //创建拆分文件并关流
                for (int i = 0; i < hssfWorkbooks.size(); i++) {
                    String splitFilePath = defaultDir + fileName + File.separator + fileName + i + ".xlsx";
                    File file = new File(splitFilePath);
                    file.createNewFile();
                    FileOutputStream outputStream = new FileOutputStream(file);
                    hssfWorkbooks.get(i).write(outputStream);
                    hssfWorkbooks.get(i).close();
                }
            } catch (IOException e) {
                logger.error("拆分xls文件失败  :" + e);
            }
            stopWatch.stop();
            logger.info("xls文件拆分共花费:  " + stopWatch.getTotalTimeMillis() + " ms");
            return defaultDir + fileName + File.separator;
        }

    3、拆分xlsx类型的文件方法

    (1)参数inputStream为要拆分的文件流

    (2)参数fileName为拆分文件名

    (3)参数splitSize为拆分后每个文件的最大行数

    (4)思路:根据前端传的excel文件流转换为一个Workbook文件,创建Workbook文件目的就是能够更好的操作excel,然后获取总行数,根据传到splitSize计算出需要创建几个excel文件,然后创建需要的若干个空excel放入list集合中,遍历原始excel,遍历时有行,单元格的概念,这个poi都能够操作,原始文件第一行的所有单元格都遍历到每个拆分文件的第一行,其余行随机往拆分文件里面一行一行的写,写到最后,将拆分文件集合中的Workbook文件写入存放拆分文件的目录中,关流。

        /**
         * 拆分xlsx文件并返回文件夹路径
         *
         * @param inputStream
         * @param fileName
         * @param splitSize
         * @return
         */
        public static String getXlsxZipPath(InputStream inputStream, String fileName, int splitSize) {
            StopWatch stopWatch = new StopWatch();
            stopWatch.start();
            Workbook workBook = null;
            try {
                workBook = WorkbookFactory.create(inputStream);
            } catch (Exception e) {
                logger.error("Load excel file error!", e);
                return null;
            }
            try {
                Sheet sheet = workBook.getSheetAt(0);
                Iterator<Row> rowIterator = sheet.rowIterator();
                int totalRows = sheet.getPhysicalNumberOfRows();
                int splitNumber = (int) ((totalRows % splitSize == 0) ? (totalRows / splitSize) : (totalRows / splitSize + 1));
                logger.info("xlsx文件总行数: {}行  拆分文件个数:{}个", totalRows, splitNumber);
                List<XSSFWorkbook> xssfWorkbooks = new ArrayList<>();
                //创建存放拆分文件的目录,文件夹存在,可能里面有内容,删除所有内容
                File dir = new File(defaultDir + fileName);
                if (dir.exists()) {
                    delAllFile(dir.getAbsolutePath());
                }
                dir.mkdirs();
                //创建的拆分文件写入流并放入集合中
                for (int count = 0; count < splitNumber; count++) {
                    XSSFWorkbook xssfWorkbook = new XSSFWorkbook();
                    xssfWorkbook.createSheet().createRow(0);
                    xssfWorkbooks.add(xssfWorkbook);
                }
                int oldRow = 0;
                while (rowIterator.hasNext()) {
                    Row row = rowIterator.next();
                    if (row.getRowNum() == 0) {
                        oldRow++;
                        Iterator<Cell> cellIterator = row.cellIterator();
                        int index = 0;
                        while (cellIterator.hasNext()) {
                            Cell next = cellIterator.next();
                            next.setCellType(CellType.STRING);
                            String value = next.getStringCellValue();
                            for (int count = 0; count < splitNumber; count++) {
                                XSSFRow row1 = xssfWorkbooks.get(count).getSheetAt(0).getRow(0);
                                row1.createCell(index).setCellValue(value);
                            }
                            index++;
                        }
                    }
                    if (row.getRowNum() != 0) {
                        Iterator<Cell> cellIterator = row.cellIterator();
                        XSSFWorkbook xssfWorkbook = xssfWorkbooks.get(oldRow % splitNumber);
                        XSSFSheet sheet1 = xssfWorkbook.getSheetAt(0);
                        int index = 0;
                        XSSFRow row1 = sheet1.createRow(sheet1.getLastRowNum() + 1);
                        while (cellIterator.hasNext()) {
                            Cell next = cellIterator.next();
                            next.setCellType(CellType.STRING);
                            String value = next.getStringCellValue();
                            row1.createCell(index++).setCellValue(value);
                        }
                        oldRow++;
                    }
                }
                //创建拆分文件并关流
                for (int i = 0; i < xssfWorkbooks.size(); i++) {
                    String splitFilePath = defaultDir + fileName + File.separator + fileName + i + ".xlsx";
                    File file = new File(splitFilePath);
                    file.createNewFile();
                    FileOutputStream outputStream = new FileOutputStream(file);
                    xssfWorkbooks.get(i).write(outputStream);
                    xssfWorkbooks.get(i).close();
                }
            } catch (IOException e) {
                logger.error("拆分xlsx文件失败  :" + e);
            }
            stopWatch.stop();
            logger.info("xlsx文件拆分共花费:  " + stopWatch.getTotalTimeMillis() + " ms");
            return defaultDir + fileName + File.separator;
        }

    4、这两种方法具体用哪一个需要在使用之前判断传过来的文件类型。

    5、上面需要用到的删除文件方法如下

      /***
         * 删除文件夹
         *
         */
        public static void delFolder(String folderPath) {
            try {
                delAllFile(folderPath); // 删除完里面所有内容
                String filePath = folderPath;
                filePath = filePath.toString();
                File myFilePath = new File(filePath);
                myFilePath.delete(); // 删除空文件夹
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    
        /***
         * 删除指定文件夹下所有文件
         *
         * @param path 文件夹完整绝对路径
         * @return
         */
        public static boolean delAllFile(String path) {
            boolean flag = false;
            File file = new File(path);
            if (!file.exists()) {
                return flag;
            }
            if (!file.isDirectory()) {
                return flag;
            }
            String[] tempList = file.list();
            File temp = null;
            for (int i = 0; i < tempList.length; i++) {
                if (path.endsWith(File.separator)) {
                    temp = new File(path + tempList[i]);
                } else {
                    temp = new File(path + File.separator + tempList[i]);
                }
                if (temp.isFile()) {
                    temp.delete();
                }
                if (temp.isDirectory()) {
                    delAllFile(path + "/" + tempList[i]);// 先删除文件夹里面的文件
                    delFolder(path + "/" + tempList[i]);// 再删除空文件夹
                    flag = true;
                }
            }
            return flag;
        }

    三、总结

    以上就是我封装的拆分excel文件的方法,希望可以帮到你,觉得有用点个赞,欢迎关注java基础笔记,交流技术。

     

     

    展开全文
  • excel2003中怎么冻结行列标题如下:操作版本excel2003;以下图中数例;现在冻结第1A列;1;在B2单元格点下;2;然后,在工作方的命令栏中顺序点:窗口-冻结窗格3;工作表中,在第1的下边缘显出一条黑色线;在A列...

    excel2003中怎么冻结行列标题

    如下:

    操作版本excel2003;

    以下图中数例;现在冻结第1A列;

    1;在B2单元格点下;

    2;然后,在工作方的命令栏中顺序点:窗口-冻结窗格

    3;工作表中,在第1行的下边缘显出一条黑色线;在A列的右侧边缘显出一条黑色线。这是冻结行列标题的分界线。

    4;行列标题已冻结;现在,我们拉上下滚动条,第1行保持在当前没有移动;再拉左右滚动条,A列保持在当前位置没有移动。

    Excel2010如何冻结指定的窗格(行或列)作为标题栏?

    1.在下图为例,冻结第1为标题栏。数据的全图如下,现在显是第1-13行。2.当到第4行时,就看不到第1行了。因此很难弄清哪一列数据属于第1行中的哪一项。3.现在我们开始着手冻结第1行。首先用鼠标点击第2行前的数字“2”,选中第2行的数据。4.然后进入“视图”菜单,点击“冻结窗格”下的“冻结拆分窗格”即可,冻结首行到此完成。5.现在我们下翻数据看看效果,见下图。虽然数据目前显示的是第5行,但第5行上面仍然是标题栏第1行。6.如果你想同时冻结第1行和第1列。那么选中B2单元格,点击“冻结拆分窗格”即可!注意:“冻结拆分窗格”功能冻结的是所选单元格的上一行和左边的列。

    office excel中怎样冻结顶端标题行?

    一、让每一页都显题行

    单击表格行下边那行最前端的格击“窗口”菜单→拆分,这时表格会被分割线分成上下两部分,第一部分显示为标题行,第二部分显示为表格具体数据(如图1),接着再单击“窗口”菜单→冻结窗口,这时再试着翻页看一下,是不是每页都有标题行了

    注意:假如还想同时在左侧也冻结一列或几列,就应单击表格标题行下边那行从最前端数的第一或第二个……单元格,因为拆分窗口的依据是光标所在单元格。但是光标也能够在任意处进行拆分,然后再把鼠标指针指向横向或纵向分割线,待鼠标指针变成双向箭头时按住左键拖动到最终需要的地方,但假如左侧没有冻结内容,应把纵向分割线拖到A列的左侧,也就是不进行纵向分割。

    在excel中怎么冻结标题行或标题列

    菜单“视图”→“冻结窗格”,再根据需要进行选择。(如果不是首行或首列,应先选好需要冻结的位置,再进行上述操作)

    展开全文
  • i Follow your hear(跟着心走) 端午天的哈尔滨之旅已经over,非常开心真的非常开心.听了刘四风老师的"为爱开讲.我爱这世界"的论坛,尽管.这天老师讲的不多.可是句句是精华.Follow your heart ... ios中点语法、...

    poj 1251 Jungle Roads &lpar;最小生成树&rpar;

    poj   1251  Jungle Roads  (最小生成树) Link: http://poj.org/problem?id=1251 Jungle Roads Time Limit: 1000 ...

    如何开启telnet 23端口

    netstat -tnl|grep 23 查看23端口是否开启 或者 chkconfig --list|grep telnet 检查telnet状态 如果关闭状态, 开启:chkconfig --le ...

    centos 7 的几点改动

    1.运行级别 旧:/etc/inittab 新:/etc/ststemd/system  例:ln -sf /lib/systemd/system/multi-user.target /etc/sys ...

    bzoj3064 CPU监控

    今天终于写了一道正常的题 思路是这样的: 1.普通线段树add,set不变,并改为下放标记版本 2.past_addv 记录一个区间内可能的addv值的最大值 3.past_setv 记录一个区间被s ...

    javascript字符类型操作函数

    //获取字符串的长度 String.prototype.getByteLength = function() { var bytes=0,i=0; for (; i

    Follow your hear(跟着心走)

    端午三天的哈尔滨之旅已经over,非常开心真的非常开心.听了刘四风老师的"为爱开讲.我爱这世界"的论坛,尽管.这三天老师讲的不多.可是句句是精华.Follow your heart ...

    ios中点语法、property跟synthesize用法

    一:OC中得点语法 1> 点语法的基本使用: ·使用 对象.成员变量   可以实现设置成员变量值,和获取成员变量的值   2> 点语法的本质 (点语法是Xcode编译器自己帮我们完成的一个 ...

    Python中的numpy模块解析

    numpy 1.  创建对象 维度(dimensions):轴 轴的个数:秩(rank) Numpy最重要的一个特点就是其N维数组对象(即ndarray) 创建数组最简单的函数就是用array函数: ...

    list&lt&semi;PageData&gt&semi;传jsp隐藏域,在传回java

    java传jsp,代码如下: /**去修改页面 * @param * @throws Exception */ @RequestMapping(value="/goEdit") p ...

    展开全文
  • 标题:word文档如何快速拆分表格,干货!怎样快速拆分表格以及快速合并表格技巧介绍word是一款文字处理器应用程序,我们大家在生活中工作中都会频繁的使用到word写一些文字、素材等等内容,我们记录一些信息的时候...
  • 通过对word表格添加题注,位置设为表格上方,编辑题注内容再将字体居中设置就可以实现在word表格上方加标题。具体操作请参照以下步骤。1、新建一个word文档,建立一个几行几列的表格。具体尺寸可根据个人需求建立,...
  • excel冻结在用excel制作各类报表中,经常需要将某一...excel2013冻结的方法office版打开软件,打开需要处理或者是正在进行工作中的表格文档,如这里打开一份食品杂货类表,如图。excel2013冻结...
  • ="请鼠标选择需要拆分数据的开始区域", Title:="选择", Type:=8) '选取拆分起始处 m = data_column.Row '获取分割开始所在区域行号 r = data_column.Column '获取分割开始所在区域列号 j = data_column....
  • Excel表格按行数拆分为多个文件

    千次阅读 2021-07-05 09:57:46
    此代码只适用微软的Office Excel软件,WPS...在点击代码界面上边的绿色小箭头运行代码就可以进行拆分表格了。 Sub ZheFenSheet() Dim r, c, i, WJhangshu, WJshu, bt As Long r = Range("A" & Rows.Count).E
  • Excel表格怎么将一个单元格拆分成2个?Excel表格单元格的合成和拆分是最常使用的两个功能,那么如何使用Excel表格表格拆分有填写内容的单元格呢?如何将一个有内容的单元格拆分呢?一般我们都是拆分空单元格,如果...
  • 对于表格组件的需求是最多的,但是在一些特定场景下,发现iview的表格组件没有单元格合并与拆分的API,搜了一下发现很多同学提问关于iview表格组件的单元格如何拆分和合并的问题。因此某家在此说下我们在项目中如何...
  • Sub 拆分总表() Sheets(1).Select Ro = [A65536].End(3).Row '根据第A列提取最大行数 Co = [XFD1].End(1).Column '根据第1提取最大列数 Dim i As Integer, sht As Worksheet NullName = "【空数据】" m = ...
  • (如下图)打开excel表格之后,需定的是第一行的主标题和第二行的分类标题,那么要锁定之前,需要先把把鼠标点击第三行并停留在第三行,然后再点击左上角的“视图”菜单。(如下图)在视图菜单列表下的工具栏中,找到...
  • 表格拆分 Python实现表格拆分的逻辑比较简单,就是利用pandas分组然后将每组的数据单独导出存表即可 原表数据长这样: 汇总表 # 拆分表格 def splitTable(df,_key): print('----------正在进行表格拆分----------...
  • 合并和拆分变体是亚马逊运营必备的一项操作,通过合并和拆分变体,能够更好的调整布局,达到一些运营的目的。下面来具体介绍一下如何合并和拆分变体。一、什么是亚马逊变体?亚马逊变体(又称为父/子关系)是彼此...
  • ="请选择标题行:", Type:=8) myArray = WorksheetFunction.Transpose(myRange) Set titleRange = Application.InputBox(prompt:="请选择拆分的表头,必须是第一,且为一个单元格,如:“组织”", Type:=8) title ...
  • 前言step 1 进入excel vba编程界面step 2 粘贴代码step 3 运行代码step 4 删除宏代码 前言 这两天接触到excel比较多,才发现...如果我们要把这个表按照班级拆分个表,可能一般我们都是通过筛选后复制粘贴。但这...
  • Word使用技巧(表格技巧、快捷键)

    千次阅读 2021-03-07 08:50:30
    一、表格技巧1、拆分表格在word中插入的表格,如果需要拆分成两个,只需要选取某的单元格,按ctrl+shift+回车键,即可在该行上面添加一个空行。拆分拆分后2、在表格中间插入一光标放在表格该行后换,按...
  • 单击“表格→绘制斜线表头”命令,出现对话框,单击“表头样式”下拉菜单选择一种样式(共有5种可选择),分别填入“标 题”(右上角的项目)、“列标题”(左下角的项目)和“数据标题”(中间的项目)以及“字体大小”...
  • 一、需求 总体需求是根据word模板和数据,生成对应的word文件。经过技术调查后,确定poi-tl是最合适,最方便的框架。... 但是,我的需求中有一个动态生成带小标题表格数据的问题,如图: 如图中红...
  • java 合并和拆分单元格You can easily merge and split cells in Microsoft Word to make your tables more interesting and more suited to the data you are trying to share. When you merge two or more cells, ...
  • 冻结Excel表格两行不滚动问题:首先,选择需要冻结行的下一行,(比如需冻结两行,就选第三行);其次,点击视图—>冻结窗格—>冻结拆分窗格;再次,点击页面布局—>打印标题—>工作表—>顶端...
  • 一、原始数据表如下(sheet页名称为:数据源),需要根据B列人员所属组织拆分成每个组织一个工作表。 二、进入VBE编辑页面 、插入一个新的模块。 四、在模块1窗口粘入如下代码 ,并保存 五、通过【开发者工具】...
  • 对于下面两个表格,如果想要把表格①转为为表格②,分别该怎么操作呢? 图一 图二 对于第一副图,如果想把二维表转换为一维数据表,很多人会想到利用数据透视表的多重合并计算功能,但是还有一种更简单的方法...
  • 对于这样的数据,就需要把一列平均分配到多列,通常有两种方法来实现,先来看看操作的方法:一、操作法将一列数据变成多列步骤1:先设计好需要拆分为几列,然后将标题手动做好;本例中计划拆分8列。步骤2:在c2...
  • 超简单的方法完整保留原有所有样式拆分Excel表

    万次阅读 多人点赞 2021-06-21 20:11:02
    我们希望将其按照指定的字段拆分为多个表格。如果直接用pandas,代码很简单却只能保留数据;如果使用openpyxl,也无法直接设置原有的样式,需要逐个设置会非常麻烦。下面我将使用Excel自带的筛选功能,筛选出指定的...
  • 步:我们在E列标题行下面的第一(即D2单元格)写下这样的公式“=IF(D2>0,1,"a")” ,然后双击填充。如下图: 公式的意思是:如果本行d列单元格的数值大于0,则本行e列的单元格的值为数值1,否者为文本a。我们...
  • excel拆分一、前言二、准备员工信息表测试数据拆分三(1):根据所在分公司列拆分为多个sheet操作步骤1. 选中要拆分的sheet,右键单击“查看代码”,如图:2. 插入如下代码:3. 运行,实现拆分为多个sheet(代码...
  • 一、使用说明: 1.要分列的表列中间不要出现空内容,比如要分第2列部门,里面有A部门,B部门,还有个空内容的,可能导致计算行数不准。 2.分列后的表序号功能还未完善,分列后还要手动拉一下序号 3.其他bug还在...
  • 在制作 Word 文档过程中,偶尔会遇到这样一...除在无缝表格之间插入文字外,还会遇到在表格前插入文字与把表格拆分后再插入文字的情况,前者可能会常常遇到,后者可能只是偶尔遇到,它们的具体情况也看下面的实例。...

空空如也

空空如也

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

拆分表格怎么保留前三行标题

友情链接: droop_control_12March_B.zip