本文实例讲述了Jexcel实现按一定规则分割excel文件的方法。分享给大家供大家参考。具体如下:

现有一个excel文档,需要读取它并按照一定的规则,分割之,分割出来的每一段记录需要单独创建一个excel文档并写入其中,一定要保证单元格格式的一致性。

package edu.bjut.zhutong.excelParser;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStream;

import jxl.Cell;

import jxl.CellType;

import jxl.Sheet;

import jxl.Workbook;

import jxl.format.Alignment;

import jxl.format.Border;

import jxl.format.BorderLineStyle;

import jxl.format.Colour;

import jxl.format.VerticalAlignment;

import jxl.read.biff.BiffException;

import jxl.write.Label;

import jxl.write.WritableCellFormat;

import jxl.write.WritableFont;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

import jxl.write.WriteException;

import jxl.write.biff.RowsExceededException;

public class ExcelParser {

public static void main(String[] args) {

Workbook wb = null;

try {

//获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了

InputStream is = new FileInputStream("C:/excel/excel.xls");

wb = Workbook.getWorkbook(is);

// 获得第一个工作表对象

Sheet sheet = wb.getSheet(0);

//获得工作表的行数和列数

int rows = sheet.getRows();

int cols = sheet.getColumns();

System.out.println("一共 " + rows + " 行");

System.out.println("一共 " + cols + " 列");

int counter = 0; //工作表行游标

int fileCounts = 1; //用来标识创建的excel文档数目

while(counter

//得到counter行的所有单元格

Cell[] rowCells = sheet.getRow(counter);

Cell cell0 = rowCells[0];

//判断单元格内容的类型

if(cell0.getType() == CellType.LABEL) {

System.out.println("正在解析第 " + fileCounts + " 个文件....");

//新建一个excel文档

File file = new File("C:/excel/excel" + fileCounts + ".xls");

WritableWorkbook wwb = Workbook.createWorkbook(file);

//设置excel文档的工作表

WritableSheet ws = wwb.createSheet("sheet1", 0);

//第一行合并第0到第8列

ws.mergeCells(0, 0, 8, 0);

//设置第7,8,9列的列宽

ws.setColumnView(6, 10);

ws.setColumnView(7, 45);

ws.setColumnView(8, 27);

//向新建的表中写入数据,首先第一行先写入标题

for(int k=0; k

//创建WritableFont对象用来格式化字体,这里是20号宋体,加粗

WritableFont wf = new WritableFont(WritableFont.createFont("宋体"), 20, WritableFont.BOLD, false);

//使用WritableFont创建单元格格式化对象

WritableCellFormat wcf = new WritableCellFormat(wf);

//设置水平对齐方式

wcf.setAlignment(Alignment.CENTRE);

//设置垂直对齐方式

wcf.setVerticalAlignment(VerticalAlignment.CENTRE);

//设置边框和颜色

wcf.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);

Cell cell = rowCells[k];

Label label = new Label(k,0,cell.getContents(),wcf);

//添加单元格到表中

ws.addCell(label);

//设置第一行的行高

ws.setRowView(0, 30*20, false);

}

//向新建的表中写入数据,第二行写入表头

for(int c=0; c

String colCon = sheet.getCell(c, 1).getContents();

WritableFont wf = new WritableFont(WritableFont.createFont("宋体"), 12, WritableFont.BOLD, false);

WritableCellFormat wcf = new WritableCellFormat(wf);

wcf.setAlignment(Alignment.CENTRE);

wcf.setVerticalAlignment(VerticalAlignment.CENTRE);

wcf.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);

ws.addCell(new Label(c,1,colCon,wcf));

ws.setRowView(1, 18*20, false);

}

int rowCounts = 1; //用来遍历50

counter++; //将游标移动到下一行

if(counter == 1) //如果游标到了第二行 ,就自动把游标移动到第三行,第二行不需要处理

counter = 2;

int rowIndex = 2; //每篇excel文档的游标

rowCells = sheet.getRow(counter);

cell0 = rowCells[0];

while(cell0.getType() == CellType.NUMBER && counter

rowCells = sheet.getRow(counter);

for(int k=0; k

WritableFont wf = new WritableFont(WritableFont.createFont("宋体"), 12, WritableFont.NO_BOLD, false);

WritableCellFormat wcf = new WritableCellFormat(wf);

wcf.setAlignment(Alignment.CENTRE);

wcf.setVerticalAlignment(VerticalAlignment.CENTRE);

wcf.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);

Label label = new Label(k,rowIndex,rowCells[k].getContents(),wcf);

ws.addCell(label);

}

//用来处理备注列的边框

{

WritableFont wf = new WritableFont(WritableFont.createFont("宋体"), 12, WritableFont.NO_BOLD, false);

WritableCellFormat wcf = new WritableCellFormat(wf);

wcf.setAlignment(Alignment.CENTRE);

wcf.setVerticalAlignment(VerticalAlignment.CENTRE);

wcf.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);

Label label = new Label(8,rowIndex,"",wcf);

ws.addCell(label);

}

ws.setRowView(rowIndex, 18*20, false);

rowIndex++;

counter++;

cell0 = sheet.getRow(counter)[0];

}

wwb.write();

wwb.close();

fileCounts++;

}

}

System.out.println("程序执行结束....");

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (BiffException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} catch (RowsExceededException e) {

e.printStackTrace();

} catch (WriteException e) {

e.printStackTrace();

} finally {

wb.close(); //关闭Workbook对象

}

}

}

希望本文所述对大家的java程序设计有所帮助。

java拆分excel_Jexcel实现按一定规则分割excel文件的方法相关推荐

  1. java利用poi读取excel_java利用POI读取excel文件的方法

    摘要:利用java读取excel文件,读取文件并获取文件中每一个sheet中的值. 一.需要提前导入的包: import java.io.File; import java.io.FileInputS ...

  2. java解析Excel文件的方法

    java解析Excel文件的方法 介绍 1.1 pom依赖 1.2 将数据流转化为可解析的Workbook类型文件 1.3 解析 1.4 Controller层接收前端传递的Excel文件(前端使用E ...

  3. linux 分隔大文件,linux系统下分割大文件的方法

    本文介绍下在linux系统中,分割大文件的方法,比如一个5gb日志文件切割为很多小块. 在linux中分割大文件,比如一个5gb日志文件,需要把它分成多个小文件,分割后以利于普通的文本编辑器读取. 有 ...

  4. linux下分割文件的方法,关于linux系统下分割大文件的方法

    <关于linux系统下分割大文件的方法>由会员分享,可在线阅读,更多相关<关于linux系统下分割大文件的方法(4页珍藏版)>请在人人文库网上搜索. 1.关于 linux系统下 ...

  5. linux切大文件为小文件,linux系统下分割大文件的方法

    在linux中分割大文件,比如一个5gb日志文件,需要把它分成多个小文件,分割后以利于普通的文本编辑器读取. 有时,需要传输20gb的大文件到另一台服务器,也需要把它分割成多个文件,这样便于传输数据. ...

  6. linux 大文件按照大小切割,关于linux系统下分割大文件的方法

    关于linux系统下分割大文件的方法 在linux中分割大文件,比如一个5gb日志文件,需要把它分成多个小文件,分割后以利于普通的文本编辑器读取. 有时,需要传输20gb的大文件到另一台服务器,也需要 ...

  7. Java工具总结:将数据内容写入excel文件

    Java工具总结:将数据内容写入excel文件 文章目录 Java工具总结:将数据内容写入excel文件 一.背景 二.功能描述 三.使用该工具类:Java代码演示 四.分析代码 4.1 几个重要的J ...

  8. Java读取txt文件、excel文件的方法

    Java读取txt文件.excel文件的方法 1.读取txt文件 public static String getFileContent(String filePath,String charset) ...

  9. java接收的文件转换成临时文件,java实现酷狗音乐临时缓存文件转换为MP3文件的方法...

    这篇文章主要介绍了java实现酷狗音乐临时缓存文件转换为MP3文件的方法,涉及java针对文件操作的相关技巧,需要的朋友可以参考下 本文实例讲述了java实现酷狗音乐临时缓存文件转换为MP3文件的方法 ...

最新文章

  1. CSS自适应的占位符效果
  2. 基于音乐的脑机接口——采访Stefan Ehrlich 和 Kat Agres(上)
  3. python就业方向选择-学完Python,你有哪些就业方向可以选?
  4. Wand mixture在Horseshoe模型中的应用
  5. 【.Net Micro Framework PortingKit(补) – 1】USB驱动开发
  6. 【Minimum Depth of Binary Tree】cpp
  7. Dusktree System (1)
  8. Sql Server之旅——第十三站 深入的探讨锁机制
  9. Linux环境下源码编译方式安装MySQL5.1(1)
  10. 数据流(任务并行库 TPL)
  11. 有血有肉,汇报年终总结
  12. 用国外的服务器有什么样的优势吗?
  13. 瑞芯微(RKDocs)平台技术开发资料汇总(rk3188,rk3066,RK3128,rk3288)
  14. Ubuntu系统下载网易云音乐
  15. 皮皮虾vs最右短视频分析
  16. MYSQL排序加分页报错Out of sort memory, consider increasing server sort buffer size
  17. ionic3 添加蒙版,弹出悬浮框
  18. Realtek RTL8762C/Realtek RTL8762D学习记录
  19. C++中构造函数的超详细讲解
  20. 服装设计师如何进行市场调研?

热门文章

  1. Soil Ecology Letters被ESCI收录
  2. QIIME 2教程. 23图形界面q2studio(2021.2)
  3. MPB:中南大学刘学端、马丽媛组-基于16S测序和RT-qPCR的硫化矿物表面微生物群落组成分析...
  4. Nature子刊:涵盖20多万个基因组的人体肠道微生物参考基因组集
  5. Gut:北京生科院赵方庆团队揭示人体口腔菌群的稳定性和动态变化规律
  6. QIIME 2用户文档. 15进行纵向和成对样本比较q2-longitudinal(2018.11)
  7. R语言编写自定义函数计算R方、使用自助法Bootstrapping估计多元回归模型的R方的置信区间、可视化获得的boot对象、估计单个统计量的置信区间、分别使用分位数法和BCa法
  8. R语言ggplot2可视化在可视化的接种中插入图片、添加图片实战
  9. R语言t分布函数Student t distribution(dt, pt, qt rt )实战
  10. pandas使用cut函数基于分位数进行连续值分箱(手动计算分位数)处理后出现NaN值原因及解决