生成Excel的几种方式

原创 2015年11月19日 11:34:13
package com.hanyang;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import jxl.Cell;
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.ScriptStyle;
import jxl.format.UnderlineStyle;
import jxl.format.VerticalAlignment;
import jxl.read.biff.BiffException;
import jxl.write.Blank;
import jxl.write.DateFormat;
import jxl.write.DateFormats;
import jxl.write.DateTime;
import jxl.write.Formula;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.NumberFormat;
import jxl.write.WritableCell;
import jxl.write.WritableCellFeatures;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableHyperlink;
import jxl.write.WritableImage;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

import org.apache.commons.io.FileUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.junit.Test;

/**
 * 演示导出EXCEL三种方式.(md搞不下去了)
 *  1.使用JSL制作简单的Excel:包含修改字体等
 * @author zhanghui
 */
public class ExportExcel {
    public static final String[] title = { "部门", "姓名", "工资标准" };
    public static final String[] jax = { "java", "JAX", "10000" };
    @Test
    //1.jsl方式生成Excel
    public void jslExpExcel() throws Exception {
        WritableWorkbook workbook = Workbook.createWorkbook(new File(
                "d:/jsl_Excel.xls")); // 创建一个可读写的副本(本地)
        
        //若改为下载时(非web项目,ClassNotFound)
        /*String str;
        str =new String("下载命名".getBytes(),"ISO-8859-1")+".xls";
        ActionContext ctx = ActionContext.getContext();
        HttpServletRequest request = (HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);
        ByteArrayOutputStream ba = new ByteArrayOutputStream();
        WritableWorkbook workbook2 = Workbook.createWorkbook(ba);
        HttpServletResponse response = (HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE);
        response.setContentType( "multipart/form-data" ); //自动判断类型
        response.setHeader("Content-Disposition","attachment;filename="+str+"");
        response.setContentLength(ba.size());
        ServletOutputStream out = response.getOutputStream();
        ba.writeTo(out);        
        out.flush();*/
        WritableSheet sheet = workbook.createSheet("Sheet1", 0); // 定义与设置Sheet
        Label label = null;
        WritableCell cell = null;
        WritableCellFormat wcf = null;
        WritableCellFeatures wcfeatures = null;
        for (int i = 0; i < title.length; i++) { // 添加列名
            label = new Label(i, 0, title[i]);
            sheet.addCell(label);
        }
        for (int i = 0; i < jax.length; i++) { // 添加列对应的内容
            label = new Label(i, 1, jax[i]);
            sheet.addCell(label);
        }
        for (int i = 0; i < jax.length; i++) {
            WritableFont titleWf = new WritableFont(
                    WritableFont.createFont("SimSun"),// 字体
                    10,// WritableFont.DEFAULT_POINT_SIZE, // 字号
                    WritableFont.NO_BOLD, // 粗体
                    false, // 斜体
                    UnderlineStyle.NO_UNDERLINE, // 下划线
                    Colour.BLACK, // 字体颜色
                    ScriptStyle.NORMAL_SCRIPT);
            wcf = new WritableCellFormat(titleWf);
            wcf.setBackground(Colour.GRAY_25);// 设置单元格的背景颜色
            wcf.setAlignment(Alignment.CENTRE); // 设置对齐方式
            wcf.setBorder(Border.ALL, BorderLineStyle.THICK); // 添加边框
            int length = jax.length; // 设置字体
            for (int j = 0; j < length; j++) {
                cell = sheet.getWritableCell(j, i);
                cell.setCellFormat(wcf);
            }
        }
        workbook.write();
        workbook.close();
        
    }
    
    @Test
    //读取Excel
    public void jslReadExcel(){
        try {
            Workbook workbook = Workbook.getWorkbook(new File("d:/jsl_Excel.xls")); //创建workbook
            Sheet sheet = workbook.getSheet(0); //获取第一个sheet
            for (int i = 0; i < sheet.getRows(); i++) { //获取内容
                for (int j = 0; j < sheet.getColumns(); j++) {
                    Cell cell = sheet.getCell(j,i);
                    System.out.println(cell.getContents()+"");
                }
                System.out.println();
            }
            workbook.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    @Test
    //2.poi方式生成Excel
    public void poiExpExcel(){
        HSSFWorkbook workbook = new HSSFWorkbook(); //创建一个工作簿
        HSSFSheet sheet =workbook.createSheet(); //创建工作表
        
        HSSFCellStyle style = workbook.createCellStyle(); // 样式对象
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER); //设置居中
        HSSFFont font=workbook.createFont(); //设置字体(默认宋体)
        font.setColor(HSSFColor.BLACK.index);//HSSFColor.VIOLET.index //字体颜色
        font.setFontHeightInPoints((short)10);
        style.setFont(font); //把字体应用到当前的样式
        
        HSSFRow row = sheet.createRow(0); //创建第一行
        HSSFCell cell = null; //创建列
        for (int i = 0; i < title.length; i++) {
            cell = row.createCell(i);
            cell.setCellValue(title[i]);
            cell.setCellStyle(style);
        }
        for (int i = 1; i <10; i++) { //追加内容
            HSSFRow nextRow = sheet.createRow(i);
            cell = nextRow.createCell(0);
            cell.setCellValue("java张慧");
            cell.setCellStyle(style);
            
            cell = nextRow.createCell(1);
            cell.setCellValue("name"+1);
            cell.setCellStyle(style);
            
            cell = nextRow.createCell(2);
            cell.setCellValue("10000"+i);
            cell.setCellStyle(style);
        }
        //若为下载时:加上即可
        /*ActionContext ctx = ActionContext.getContext();
        HttpServletResponse response = (HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE);
        response.setContentType( "multipart/form-data" );
        response.setHeader("Content-Disposition","attachment;filename="+str+".xls");
        ServletOutputStream out = response.getOutputStream();
        workbook.write(out);*/
        File file = new File("d:/poi_Excel.xls");
        try {
            file.createNewFile();
            FileOutputStream fos = FileUtils.openOutputStream(file);
            workbook.write(fos);
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    @Test
    public void poiReadExcel(){
        File file = new File("d:/poi_Excel.xls");
        try {
            HSSFWorkbook workbook = new HSSFWorkbook(FileUtils.openInputStream(file));
            //HSSFSheet sheet2 =workbook.getSheet("Sheet0"); //按名称
            HSSFSheet sheet = workbook.getSheetAt(0); // 默认第一个
            int firstRowNum = 0;
            int lastRowNum = sheet.getLastRowNum();
            for (int i = firstRowNum; i <= lastRowNum; i++) {
                HSSFRow row  = sheet.getRow(i);
                int lastCellNum = row.getLastCellNum(); //获取当前行的最后一列
                for (int j = 0; j < lastCellNum; j++) {
                    HSSFCell cell = row.getCell(j);
                    String value  = cell.getStringCellValue();
                    System.out.print(value+" ");
                }
                System.out.println();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

java 三种excel导出方式

基于模板的EXCEL报表组件ExcelUtils    ExcelUtils 是一个在WEB应用开发中的EXCEL导出工具,它基于POI和beanutil工程。类似于velocity,它拥有自己标签...
  • wenzhihui_2010
  • wenzhihui_2010
  • 2013年06月26日 13:33
  • 2413

java web导出excel的几种方式

第一种方式:使用poi组件,适用于excel中有列表的
  • shipeng22022
  • shipeng22022
  • 2014年04月30日 09:12
  • 4087

使用eclipse生成文档(javadoc)主要有三种方法:

1,在项目列表中按右键,选择Export(导出),然后在Export(导出)对话框中选择java下的javadoc,提交到下一步。 在Javadoc Generation对话框中有两个地方要注意的: ...
  • zhengbo0
  • zhengbo0
  • 2011年12月15日 12:43
  • 712

java导出数据到excel的几种方法的比较

一、 直接拷贝整个表格到EXCEL中    二、 通过遍历表格,给EXCEL中相应的单元格赋值。    三、 把表格中的内容提取出来,利用IE的另存为.csv的格式。    各方法的好处:    1....
  • lifuxiangcaohui
  • lifuxiangcaohui
  • 2011年01月11日 11:01
  • 6309

解析XML的几种方式

XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM...
  • yuan16423276
  • yuan16423276
  • 2013年12月17日 23:29
  • 31558

Java 创建对象的几种方式

我们总是讨论没有对象就去new一个对象,创建对象的方式在我这里变成了根深蒂固的new方式创建,但是其实创建对象的方式还是有很多种的,不单单有new方式创建对象,还有使用反射机制创建对象,使用clone...
  • w410589502
  • w410589502
  • 2017年02月22日 17:09
  • 1122

创建线程有几种不同的方式?

①继承Thread类(真正意义上的线程类),是Runnable接口的实现。 ②实现Runnable接口,并重写里面的run方法。 ③使用Executor框架创建线程池。Executor框架是juc...
  • wang_xing1993
  • wang_xing1993
  • 2017年04月20日 10:45
  • 2713

数据库连接的几种方式

ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一...
  • qq_27231343
  • qq_27231343
  • 2016年10月19日 15:18
  • 1803

在线实时生成Excel文件流供下载 (SSH)

转载自:http://www.blogjava.net/qnjian/archive/2010/11/29/25999.html?opt=admin (与Java相伴的日子)   我做过的一...
  • kexinmei
  • kexinmei
  • 2012年01月12日 19:54
  • 1757

ajax常用的几种方式

1.$.ajax()返回其创建的 XMLHttpRequest 对象。 $.ajax() 只有一个参数:参数 key/value 对象,包含各配置及回调函数信息。详细参数选项见下。 如果你指定了 da...
  • sinat_33388558
  • sinat_33388558
  • 2016年12月10日 13:28
  • 1510
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:生成Excel的几种方式
举报原因:
原因补充:

(最多只允许输入30个字)