java 导出excel韩文_Java操作excel_导出与读取(导入)

我自己的jar包下载

一、介绍

常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统、银行系统)。或者是:我们已经习惯用Excel打印。这样在我们实际的开发中,很多时候需要实现导入、导出Excel的应用。

目前,比较常用的实现Java导入、导出Excel的技术有:Jakarta POI、freemarker和Java Excel

下面我就分别讲解一下如何使用这些技术实现导入、导出Excel

二、使用Jakarta POI导出Excel

Jakarta POI 是一套用于访问微软格式文档的Java API。Jakarta POI有很多组件组成,其中有用于操作Excel格式文件的HSSF和用于操作Word的HWPF,

在各种组件中目前只有用于操作Excel的HSSF相对成熟。官方主页http://poi.apache.org/index.html,API文档http://poi.apache.org/apidocs/index.html

1.环境配置

下载jar

官方下载:http://poi.apache.org/download.html这里可以下载到它的最新版本和文档,目前最新版本是3.7,这里使用比较稳定的3.6版。

加入jar包

将根目录下的poi-3.6-20091214.jar和Lib目录下三个通用包 commons-logging-1.1.jar junit-3.8.1.jar log4j-1.2.13.jar拷贝到项目的Lib下

2.Jakarta POI HSSF API组件

HSSF(用于操作Excel的组件)提供给用户使用的对象在rg.apache.poi.hssf.usermodel包中,主要部分包括Excel对象,样式和格式,还有辅助操作。有以下几种对象:

常用组件:

HSSFWorkbook excel的文档对象

HSSFSheet excel的表单

HSSFRow excel的行

HSSFCell excel的格子单元

HSSFFont excel字体

HSSFDataFormat 日期格式

HSSFHeader sheet头

HSSFFooter sheet尾(只有打印的时候才能看到效果)

样式:

HSSFCellStyle cell样式

辅助操作包括:

HSSFDateUtil 日期

HSSFPrintSetup 打印

HSSFErrorConstants 错误信息表

3. 基本操作步骤

首先,理解一下一个Excel的文件的组织形式,一个Excel文件对应于一个workbook(HSSFWorkbook),一个workbook可以有多个sheet(HSSFSheet)组成,一个sheet是由多个row(HSSFRow)组成,一个row是由多个cell(HSSFCell)组成。

基本操作步骤:

a、用HSSFWorkbook打开或者创建“Excel文件对象”

b、用HSSFWorkbook对象返回或者创建Sheet对象

c、用Sheet对象返回行对象,用行对象得到Cell对象

d、对Cell对象读写。

4.我自己写的测试用例

import java.io.FileOutputStream;

import java.util.ArrayList;

import java.util.List;

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.Region;

public class POIExportExcel {

public HSSFWorkbook generateExcel1(List list, HSSFWorkbook wb, String title) {

//行的数量

int rows = 0;

HSSFSheet sheet = wb.createSheet("Sheet1");

// 数据格样式

HSSFCellStyle dataCellStyle = createDataCellStyle(wb);

// 小标题样式

HSSFCellStyle cellStyle = createCellStyle(wb);

sheet.setDefaultRowHeight((short) 400);//设置所有行高为400

//设置列宽

sheet.setColumnWidth((short) 1, (short) 2800);

sheet.setColumnWidth((short) 2, (short) 2800);

sheet.setColumnWidth((short) 3, (short) 2800);

sheet.setColumnWidth((short) 4, (short) 2800);

sheet.setColumnWidth((short) 5, (short) 2800);

sheet.setColumnWidth((short) 6, (short) 2800);

sheet.setColumnWidth((short) 7, (short) 2800);

sheet.setColumnWidth((short) 8, (short) 2800);

sheet.setColumnWidth((short) 9, (short) 2800);

sheet.setColumnWidth((short) 10, (short) 3200);

sheet.setColumnWidth((short) 11, (short) 3200);

sheet.setColumnWidth((short) 12, (short) 3200);

sheet.setColumnWidth((short) 13, (short) 3200);

//标题行

HSSFRow row1 = sheet.createRow((short) (rows++));

row1.setHeight((short) 500);

sheet.addMergedRegion(new Region(0, (short) 0, 0, (short) 13));//横跨1-14列

createCell(row1, (short) 0, cellStyle, title);

//表头行(1,2列合并;3,4,5,6,7列合并;8,9列合并)

HSSFRow row2 = sheet.createRow((short) (rows++));

sheet.addMergedRegion(new Region(1, (short) 0, 1, (short) 1));

sheet.addMergedRegion(new Region(1, (short) 2, 1, (short) 6));

sheet.addMergedRegion(new Region(1, (short) 7, 1, (short) 8));

sheet.addMergedRegion(new Region(1, (short) 9, 1, (short) 9));

sheet.addMergedRegion(new Region(1, (short) 10, 1, (short) 10));

sheet.addMergedRegion(new Region(1, (short) 11, 1, (short) 11));

sheet.addMergedRegion(new Region(1, (short) 12, 1, (short) 12));

sheet.addMergedRegion(new Region(1, (short) 13, 1, (short) 13));

createCell(row2, (short) 0, dataCellStyle, "name1");

createNullCell(row2, (short) 1, dataCellStyle);

createCell(row2, (short) 2, dataCellStyle, "name2");

createNullCell(row2, (short) 3, dataCellStyle);

createNullCe

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值