Jexcel实现按一定规则分割excel文件的方法

本文实例讲述了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<rows-1) {
    //得到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<rowCells.length; 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<cols; 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<rows-1) {
      rowCells = sheet.getRow(counter);
      for(int k=0; k<rowCells.length; 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程序设计有所帮助。

(0)

相关推荐

  • Java数据导出功能之导出Excel文件实例

    在编程中经常需要使用到表格(报表)的处理主要以Excel表格为主.下面给出用java写入数据到excel表格方法: 1.添加jar文件 java导入导出Excel文件要引入jxl.jar包,最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件.下载地址:http://www.andykhan.com/jexcelapi/ 2.jxl对Excel表格的认识 可以参见:http://www.jb51.net/article/686

  • java创建excel示例(jxl使用方法)

    使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表.因为是使用 Java编写的,所以我们在Web应用中可以通过JSP.Servlet来调用API实现对Excel数据表的访问. 复制代码 代码如下: package com.yonyou.test; import java.io.File;import java.io.IOException; import jxl.Workbook;import jxl.format.Alignment;import jxl.for

  • java常用工具类之Excel操作类及依赖包下载

    依赖包下载:http://xiazai.jb51.net/201407/tools/java-excel-dependency(jb51.net).rar Excel工具类ExcelUtil.java源码: package com.itjh.javaUtil; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStr

  • java读取excel文件并复制(copy)文件到指定目录示例

    复制代码 代码如下: mport java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List; import org.apach

  • Java数据导入功能之读取Excel文件实例

    在编程中经常需要使用到表格(报表)的处理主要以Excel表格为主.下面给出用java读取excel表格方法: 1.添加jar文件 java导入导出Excel文件要引入jxl.jar包,最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件.下载地址:http://www.andykhan.com/jexcelapi/ 2.jxl对Excel表格的认识 (1)每个单元格的位置认为是由一个二维坐标(i,j)给定,其中i表示列,j表示

  • java使用poi读取ppt文件和poi读取excel、word示例

    Apache的POI项目可以用来处理MS Office文档,codeplex上还有一个它的.net版本.POI项目可创建和维护操作各种基于OOXML和OLE2文件格式的Java API.大多数MS Office都是OLE2格式的.POI通HSMF子项目来支持Outlook,通过HDGF子项目来支持Visio,通过HPBF子项目来支持Publisher. 使用POI抽取Word简单示例: 要引入poi-3.7.jat和poi-scratchpad-3.7.ajr这两个包. 复制代码 代码如下: p

  • java操作excel的方法

    本文实例讲述了java操作excel的方法.分享给大家供大家参考.具体如下: WritableWorkbook workbook = Workbook.createWorkbook(new File("d:\\output.xls")); WritableSheet sheet = workbook.createSheet("项目简报", 0); //样式 WritableFont sonti18font = new WritableFont(WritableFon

  • Java解析Excel内容的方法

    本文实例讲述了Java解析Excel内容的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: import java.io.File;  import java.io.FileInputStream;  import java.io.InputStream;  import java.util.ArrayList;  import org.apache.poi.hssf.usermodel.HSSFWorkbook;  import org.apache.poi.ss.user

  • Jexcel实现按一定规则分割excel文件的方法

    本文实例讲述了Jexcel实现按一定规则分割excel文件的方法.分享给大家供大家参考.具体如下: 现有一个excel文档,需要读取它并按照一定的规则,分割之,分割出来的每一段记录需要单独创建一个excel文档并写入其中,一定要保证单元格格式的一致性. package edu.bjut.zhutong.excelParser; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcep

  • java解析Excel文件的方法实例详解

    目录 介绍 1.1 pom依赖 1.2 将数据流转化为可解析的Workbook类型文件 1.3 解析 1.4 Controller层接收前端传递的Excel文件(前端使用Element-ui的<el-upload>组件) 1.5 ServiceIMPL层解析Excel文件并将解析结果返回 1.6 前端VUE实现Excel文件的上传(使用Element-ui的<el-upload>组件) 总结 在做一个项目时,有很多原本保存在Excel文件中的基础数据,如此则需要一个Excel文件解

  • python调用java模块SmartXLS和jpype修改excel文件的方法

    本文实例讲述了python调用java模块SmartXLS和jpype修改excel文件的方法.分享给大家供大家参考.具体实现方法如下: # -*- coding: utf8 -*- """ 使用java的模块SmartXLS和jpype修改excel 和xlrd,xlwt不同的是它可以生成和保持图表 """ from __future__ import print_function, division import os import jpyp

  • python使用xlrd模块读写Excel文件的方法

    本文实例讲述了python使用xlrd模块读写Excel文件的方法.分享给大家供大家参考.具体如下: 一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了python 环境. 二.使用介绍 1.导入模块 复制代码 代码如下: import xlrd 2.打开Excel文件读取数据 复制代码 代码如下: data = xlrd.open_workbook('excelFile.xls') 3.使用技巧 获取一个工作表

  • python通过openpyxl生成Excel文件的方法

    本文实例讲述了python通过openpyxl生成Excel文件的方法.分享给大家供大家参考.具体如下: 使用前请先安装openpyxl: easy_install openpyxl 通过这个模块可以很方便的导出数据到Excel from openpyxl.workbook import Workbook from openpyxl.writer.excel import ExcelWriter from openpyxl.cell import get_column_letter from o

  • Python实现抓取网页生成Excel文件的方法示例

    本文实例讲述了Python实现抓取网页生成Excel文件的方法.分享给大家供大家参考,具体如下: Python抓网页,主要用到了PyQuery,这个跟jQuery用法一样,超级给力 示例代码如下: #-*- encoding:utf-8 -*- import sys import locale import string import traceback import datetime import urllib2 from pyquery import PyQuery as pq # 确定运行

  • Android应用读取Excel文件的方法

    本文实例讲述了Android应用读取Excel文件的方法.分享给大家供大家参考,具体如下: ReadExcel.java文件: public class ReadExcel extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState)

  • JSP导出Excel文件的方法

    本文实例讲述了JSP导出Excel文件的方法.分享给大家供大家参考,具体如下: <%@page import="jxl.Workbook,com.ecc.emp.core.*,com.ecc.emp.data.*,com.ecc.emp.jdbc.ConnectionManager,jxl.format.VerticalAlignment,java.sql.*,jxl.write.*,jxl.format.UnderlineStyle,javax.sql.DataSource"%

  • C#导出数据到Excel文件的方法

    本文实例讲述了C#导出数据到Excel文件的方法.分享给大家供大家参考.具体实现方法如下: /// <summary> /// 导出到Excel类,项目需引用Microsodt.Office.Interop.Excel, /// 类文件需using System.Data与System.Windows.Forms命名空间 /// </summary> public class CToExcel { /// <summary> /// 导出到Excel /// </

  • ThinkPHP基于PHPExcel导入Excel文件的方法

    本文实例讲述了ThinkPHP基于PHPExcel导入Excel文件的方法.分享给大家供大家参考.具体方法如下: 主要知识点,用PHPExcel导入Excel数据经过这几天测试还是可以,xls,xlsx都可以获取Excel的数据. 下载地址:http://phpexcel.codeplex.com/ 开发思路: 1.先把Excel文件上传到服务器 2.获取服务器Excel文件内容 3.写入数据库 一.上传Excel文件,使用PHP里自带的上传方法 "\Think\Upload();",

随机推荐