用POI,可以把多个sheet放到一个excel里,百度搜索一下例子
解决方案 »
- 更新的时候ORA-00001: unique constraint (CSGL.SYS_C0075080) violated
- 断网出现org.springframework.beans.factory.BeanDefinitionStoreException: IOException
- 学习 基于J2EE的教务管理系统
- java高级开发工程师senior java developer(深圳职位)
- 老出404错误
- Spring 高手进,讨论下 JdbcTemplate 的用法
- 那位大哥可以帮我看下应该怎么做,非常紧急,谢谢
- <form method="post" action="*.do?id=10"> 的问题
- 为什么SSH查询后再update,数据库的其他字段被null覆盖
- 为啥输出的最小值总是零
- 关于java的数字证书方面的问题 X509CertImpl
- jocky.jar问题,大家进来看看
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;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;/**
* 去http://jakarta.apache.org/site/downloads/downloads_poi.cgi下载poi项目相关的jar包和文档
*/
public class TestPOI { /**
* 新建一个Excel文件,里面添加5行5列的内容,再添加两个高度为2的大单元格。
*
* @param fileName
*/
@SuppressWarnings("deprecation")
public void writeExcel(String fileName) { //目标文件
File file = new File(fileName);
FileOutputStream fOut = null;
try {
// 创建新的Excel 工作簿
HSSFWorkbook workbook = new HSSFWorkbook(); // 在Excel工作簿中建一工作表,其名为缺省值。
// 也可以指定工作表的名字。
//可以多创建几个sheet
HSSFSheet sheet = workbook.createSheet("Test_Table"); // 创建字体,红色、粗体
HSSFFont font = workbook.createFont();
font.setColor(HSSFFont.COLOR_RED);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 创建单元格的格式,如居中、左对齐等
HSSFCellStyle cellStyle = workbook.createCellStyle();
// 水平方向上居中对齐
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
// 垂直方向上居中对齐
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
// 设置字体
cellStyle.setFont(font); //文字自动换行,未测试
//HSSFCellStyle cs=workbook.createCellStyle();
//cs.setWrapText(true);
//cell.setCellStyle(cs); //下面将建立一个4行3列的表。第一行为表头。
int rowNum = 0;//行标
int colNum = 0;//列标
//建立表头信息
// 在索引0的位置创建行(最顶端的行)
HSSFRow row = sheet.createRow((short) rowNum);
// 单元格
HSSFCell cell = null;
for (colNum = 0; colNum < 5; colNum++) {
// 在当前行的colNum列上创建单元格
cell = row.createCell((short) colNum); // 定义单元格为字符类型,也可以指定为日期类型、数字类型
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
// 定义编码方式,为了支持中文,这里使用了ENCODING_UTF_16
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
// 为单元格设置格式
cell.setCellStyle(cellStyle); // 添加内容至单元格
cell.setCellValue("表头名-" + colNum);
}
rowNum++;
for (; rowNum < 5; rowNum++) {
// 新建第rowNum行
row = sheet.createRow((short) rowNum);
for (colNum = 0; colNum < 5; colNum++) {
// 在当前行的colNum位置创建单元格
cell = row.createCell((short) colNum);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellStyle(cellStyle);
cell.setCellValue("值-" + rowNum + "-" + colNum);
}
} // 合并单元格
// 先创建2行5列的单元格,然后将这些单元格合并为2个大单元格
rowNum = 5;
for (; rowNum < 7; rowNum++) {
row = sheet.createRow((short) rowNum);
for (colNum = 0; colNum < 5; colNum++) {
// 在当前行的colNum位置创建单元格
cell = row.createCell((short) colNum);
}
}
//建立第一个大单元格,高度为2,宽度为2
rowNum = 5;
colNum = 0;
Region region = new Region(rowNum, (short) colNum, (rowNum + 1),
(short) (colNum + 1));
sheet.addMergedRegion(region);
//获得第一个大单元格
cell = sheet.getRow(rowNum).getCell((short) colNum);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellStyle(cellStyle);
cell.setCellValue("第一个大单元格"); //建立第二个大单元格,高度为2,宽度为3
colNum = 2;
region = new Region(rowNum, (short) colNum, (rowNum + 1),
(short) (colNum + 2));
sheet.addMergedRegion(region);
//获得第二个大单元格
cell = sheet.getRow(rowNum).getCell((short) colNum);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellStyle(cellStyle);
cell.setCellValue("第二个大单元格"); //表格宽度自动适应
sheet.autoSizeColumn((short)0); //调整第一列宽度
sheet.autoSizeColumn((short)1); //调整第二列宽度
sheet.autoSizeColumn((short)2); //调整第三列宽度
sheet.autoSizeColumn((short)3); //调整第四列宽度
// 工作薄建立完成,下面将工作薄存入文件
// 新建一输出文件流
fOut = new FileOutputStream(file);
// 把相应的Excel 工作簿存盘
workbook.write(fOut);
fOut.flush();
// 操作结束,关闭文件
fOut.close(); System.out.println("Excel文件生成成功!Excel文件名:" + file.getAbsolutePath());
} catch (Exception e) {
System.out.println("Excel文件" + file.getAbsolutePath() + "生成失败:" + e);
} finally {
if (fOut != null){
try {
fOut.close();
} catch (IOException e1) {
}
}
}
} /**
* 读Excel文件内容
*
* @param fileName
*/
@SuppressWarnings("deprecation")
public void readExcel(String fileName) {
File file = new File(fileName);
FileInputStream in = null;
try {
// 创建对Excel工作簿文件的引用
in = new FileInputStream(file);
HSSFWorkbook workbook = new HSSFWorkbook(in); // 创建对工作表的引用。
// 这里使用按名引用
HSSFSheet sheet = workbook.getSheet("Test_Table");
// 也可用getSheetAt(int index)按索引引用,
// 在Excel文档中,第一张工作表的缺省索引是0,其语句为:
// HSSFSheet sheet = workbook.getSheetAt(0); //下面读取Excel的前5行的数据
System.out.println("下面是Excel文件" + file.getAbsolutePath() + "的内容:");
HSSFRow row = null;
HSSFCell cell = null;
int rowNum = 0;//行标
int colNum = 0;//列标
for (; rowNum < 5; rowNum++) {
// 获取第rowNum行
row = sheet.getRow((short) rowNum);
for (colNum = 0; colNum < 5; colNum++) {
// 获取当前行的colNum位置的单元格
cell = row.getCell((short) colNum);
System.out.print(cell.getStringCellValue() + "\t");
}
//换行
System.out.println();
} in.close();
} catch (Exception e) {
System.out.println("读取Excel文件" + file.getAbsolutePath() + "失败:" + e);
} finally {
if (in != null){
try {
in.close();
} catch (IOException e1) {
}
}
} }
public static void main(String[] args) throws Exception {
TestPOI excel = new TestPOI();
String fileName = "d:/test.xls";
excel.writeExcel(fileName);
//excel.readExcel(fileName);
}
}
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Locale;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.format.Colour;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
/*
* java 操作EXCEL文件的类,需集合jxl.jar包
* 读取并显示EXCEL数据 , 向EXCEL文件内写入数据
* author: jerry.gao
* time: 2008-07-08 11:10
*
*/
public class ExcelUtils {/* public static void main(String[] args) {
System.out.println(":====");
File file = new File("E:\\Book1.xls");
ExcelUtils eu = new ExcelUtils();
eu.readExcel(file, 0);
System.out.println(":====");
File file = new File("E:\\Book2.xls");
ExcelUtils eu = new ExcelUtils();
String[] title = {"xingming" , " nianling "};
eu.addDateToExcelFile(file, null, "jerry.gao", title); }*/ public ExcelUtils() {
super();
// TODO Auto-generated constructor stub
}
//读取EXCEL 文件 ,num 为第几张sheet , 将结果显示出来
public void readExcel(File file, int num) { try {
Workbook wb = Workbook.getWorkbook(file);
Sheet sheet = wb.getSheet(num); //获取第几张SHEET表
for (int r = 0; r < sheet.getRows(); r++) {
for (int c = 0; c < sheet.getColumns(); c++) {
System.out.print(sheet.getCell(c, r).getContents() + " | ");
}
System.out.print("\n");
}
} catch (BiffException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
/*
* 添加数据生产EXCEL文件
* file 为生成的EXCEL文件 , list 添加的数据集合 ,sheetname 工作表名 ,title 为列名
*/
public void addDateToExcelFile(File file, List list, String sheetname,
String[] title) {
try {
if (file.exists()) {
if (file.delete()) {
}
}
WorkbookSettings wbs = new WorkbookSettings();
wbs.setLocale(new Locale("zh", "CN"));
workbook = Workbook.createWorkbook(file, wbs);
WritableSheet sheet = workbook.createSheet(sheetname, 0); //创建第一张sheet, 名字为sheetname
workbook.setColourRGB(Colour.BLUE, 0xff, 0, 0);
Label lb = null;
//添加列的名称
for(int c = 0 ; c < title.length; c ++ ){
sheet.setColumnView(c, 40); //设置列的宽度 , 前参数为第几列 , 后参数为列宽
lb = new Label(c , 0 , title[c]); //添加列名
sheet.addCell(lb);
}
//添加数据
for(int r = 0 ; r < list.size() ; r++){
sheet.setRowView(r, 18); //设置行的高度 , 前参数为第几行 , 后参数为行高
lb = new Label(0 , r+1 , list.get(r).toString()); //前参数为第几列 后参数为第几行
sheet.addCell(lb);
}
workbook.write();
workbook.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RowsExceededException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (WriteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
private WritableWorkbook workbook;
}
发个读,写EXCEL文件的类给你参考,注意其中注记的地方,可以满足你的需求!