Java POI导出到Excel
程序员文章站
2024-02-24 13:14:34
...
第一次利用POI导出到Excel,网上看了一些方法,但很多太过于复杂,让人一下难以看懂,因此在这贴上比较简单易看懂的方法,方便以后使用。
util类:
package com.nian.energy.worksheet.util;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
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.HSSFRichTextString;
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.apache.poi.ss.util.CellRangeAddress;
/**
* 功能: [POI实现把数据导出到Excel]
*/
public class ExportExcelUtil {
/**
* 功能: 导出为Excel工作簿
* 参数: sheetName[工作簿中的一张工作表的名称]
* 参数: headers[表格每一列的列名]
* 参数: dataSet[要导出的数据源]
* 参数: resultUrl[导出的excel文件地址]
*/
public static void exportExcel(String sheetName,String[] headers,List<List<String>> dataList,String resultUrl) {
// 声明一个工作薄
HSSFWorkbook workbook = new HSSFWorkbook();
// 生成一个工作表
HSSFSheet sheet = workbook.createSheet(sheetName);
// 设置工作表默认列宽度为20个字节
sheet.setDefaultColumnWidth(20);
// 创建[标题]样式
HSSFCellStyle titleStyle = workbook.createCellStyle();
// 设置[标题]样式
titleStyle.setFillForegroundColor(HSSFColor.LIGHT_BLUE.index);
titleStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
titleStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
titleStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
titleStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
titleStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
//创建[标题]字体
HSSFFont titleFont = workbook.createFont();
//设置[标题]字体
titleFont.setColor(HSSFColor.WHITE.index);
titleFont.setFontHeightInPoints((short) 22);
titleFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
// 把[标题字体]应用到[标题样式]
titleStyle.setFont(titleFont);
// 创建[列首]样式
HSSFCellStyle headersStyle = workbook.createCellStyle();
// 设置[列首]样式
headersStyle.setFillForegroundColor(HSSFColor.LIME.index);
headersStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
headersStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
//创建[列首]字体
HSSFFont headersFont = workbook.createFont();
//设置[列首]字体
headersFont.setColor(HSSFColor.BLACK.index);
headersFont.setFontHeightInPoints((short) 12);
headersFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
// 把[列首字体]应用到[列首样式]
headersStyle.setFont(headersFont);
// 创建[表中数据]样式
HSSFCellStyle dataSetStyle = workbook.createCellStyle();
// 设置[表中数据]样式
dataSetStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
// 创建[表中数据]字体
HSSFFont dataSetFont = workbook.createFont();
// 设置[表中数据]字体
dataSetFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
dataSetFont.setColor(HSSFColor.BLACK.index);
// 把[表中数据字体]应用到[表中数据样式]
dataSetStyle.setFont(dataSetFont);
// 创建列首-增加样式-赋值
HSSFRow row = sheet.createRow(0);
for (int i = 0; i < headers.length; i++) {
@SuppressWarnings("deprecation")
HSSFCell cell = row.createCell(i);
cell.setCellStyle(headersStyle);
HSSFRichTextString text = new HSSFRichTextString(headers[i]);
cell.setCellValue(text);
}
// 创建表中数据行-增加样式-赋值
int index = 0;
for(List<String> l : dataList){
index++;
row = sheet.createRow(index);
for(int i = 0;i < l.size(); i++){
HSSFCell cell = row.createCell(i);
cell.setCellStyle(dataSetStyle);
cell.setCellValue(l.get(i));
}
}
OutputStream out=null;
try {
out = new FileOutputStream(resultUrl);
workbook.write(out);
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
service层:
public void exportDevice() {
String[] header={"站点名","设备Id","设备名称","设备厂家","设备型号"};
List<List<String>> dataList = new ArrayList<List<String>>();
Map<String, Object> queryMap = new HashMap<String, Object>();
List<Device > list=deviceDao.getAllDeviceList();
List<String> data = new ArrayList<String>();
for (Device device : list) {
data=new ArrayList<String>();
data.add(device.getStation().getName());
data.add(device.getDeviceId());
data.add(device.getName());
data.add(device.getManufactor());
data.add(device.getNodel());
dataList.add(data);
}
ExportExcelUtil.exportExcel("基站设备信息", header, dataList, "F:\\基站设备信息.xls");
上一篇: 基于mysql数据库的密码问题详解