标签:name 进制 san put header pac obj xlsx pat
很多时候,一个软件应用程序需要生成Microsoft Excel文件格式的报告。有时,一个应用程序甚至希望将Excel文件作为输入数据。例如,一个公司开发的应用程序将财务部门需要所有输出生成自己的Excel。
任何Java程序员愿意将MS Office文件的输出,可以使用预定义和只读API来做到。
Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件。这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Office文件的开源库。它包含类和方法对用户输入数据或文件到MS Office文档进行解码。
Apache POI包含类和方法,来将MS Office所有OLE 2文档复合。此API组件的列表如下。
POIFS (较差混淆技术实现文件系统) : 此组件是所有其他POI元件的基本因素。它被用来明确地读取不同的文件。
HSSF (可怕的电子表格格式) : 它被用来读取和写入MS-Excel文件的xls格式。
XSSF (XML格式) : 它是用于MS-Excel中XLSX文件格式。
HPSF (可怕的属性设置格式) : 它用来提取MS-Office文件属性设置。
HWPF (可怕的字处理器格式) : 它是用来读取和写入MS-Word的文档扩展名的文件。
XWPF (XML字处理器格式) : 它是用来读取和写入MS-Word的docx扩展名的文件。
HSLF (可怕的幻灯片版式格式) : 它是用于读取,创建和编辑PowerPoint演示文稿。
HDGF (可怕的图表格式) : 它包含类和方法为MS-Visio的二进制文件。
HPBF (可怕的出版商格式) : 它被用来读取和写入MS-Publisher文件。
本人做的事使用java poi导出excel文件。因此,仅限于HSSF组件。
ExportUtil工具类:
package net.dagongsoft.framework.util.poi;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
/**
* @description 利用Java poi导出excel公用类
* @author ldp
* @time 2017年6月8日 下午2:17:08
*
*/
public class ExportUtil {
/**
* 导出Excel 97(.xls)格式 ,少量数据
*
* @param title
* sheet名
* @param headString
* 列名
* @param jsonArray
* 数据集
*/
public static HSSFWorkbook exportExcel(String title, String headString, JSONArray jsonArray) {
// 声明一个工作薄
HSSFWorkbook workbook = new HSSFWorkbook();
// 表头样式
// HSSFCellStyle titleStyle = workbook.createCellStyle();
// titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
// HSSFFont titleFont = workbook.createFont();
// titleFont.setFontHeightInPoints((short) 20);
// titleFont.setBoldweight((short) 700);
// titleStyle.setFont(titleFont);
// 列头样式
HSSFCellStyle headerStyle = workbook.createCellStyle();
// headerStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
// headerStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
// headerStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
// headerStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
// headerStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
// headerStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
// HSSFFont headerFont = workbook.createFont();
// headerFont.setFontHeightInPoints((short) 12);
// headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
// headerStyle.setFont(headerFont);
// 单元格样式
HSSFCellStyle cellStyle = workbook.createCellStyle();
// cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
// cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
// cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
// cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
// cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
// cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
// cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
// HSSFFont cellFont = workbook.createFont();
// cellFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
// cellStyle.setFont(cellFont);
// 生成一个表格
HSSFSheet sheet = null;
if (StringUtils.isNotBlank(title)) {
sheet = workbook.createSheet(title);
} else {
sheet = workbook.createSheet();
}
String[] headers = headString.split(",");
// 遍历集合数据,产生数据行
int rowIndex = 0;
int count = 0;
if (jsonArray != null) {
for (int n = 0; n < jsonArray.size(); n++) {
if (rowIndex == 65535 || rowIndex == 0) {
if (rowIndex != 0) {
count++;
// 如果数据超过了,则在第二页显示
if (StringUtils.isNotBlank(title)) {
sheet = workbook.createSheet(title + count);
} else {
sheet = workbook.createSheet();
}
}
HSSFRow headerRow = sheet.createRow(0); // 列头 rowIndex =0
for (int i = 0; i < headers.length; i++) {
headerRow.createCell(i).setCellValue(headers[i]);
headerRow.getCell(i).setCellStyle(headerStyle);
}
rowIndex = 1;// 数据内容从 rowIndex=1开始
}
JSONObject jo = jsonArray.getJSONObject(n);
HSSFRow dataRow = sheet.createRow(rowIndex);
for (int i = 0; i < headers.length; i++) {
HSSFCell newCell = dataRow.createCell(i);
Object o = jo.get(headers[i]);
String cellValue = "";
if (o == null) {
cellValue = "";
} else if (o instanceof Date) {
cellValue = new SimpleDateFormat("yyyy/MM/dd 00:00:00").format(o);
} else {
cellValue = o.toString();
}
newCell.setCellValue(cellValue);
newCell.setCellStyle(cellStyle);
}
rowIndex++;
}
}
// 自动调整宽度
for (int i = 0; i < headers.length; i++) {
sheet.autoSizeColumn(i);
}
return workbook;
}
}
控制类:
package net.dagongsoft.platform.poi.controller;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.alibaba.fastjson.JSONArray;
import net.dagongsoft.platform.poi.entity.Student;
import net.dagongsoft.platform.poi.service.StudentExportService;
import net.dagongsoft.platform.poi.util.ExportUtilTest;
@Controller
@RequestMapping("/studentExportController")
public class StudentExportController {
@Autowired
private StudentExportService studentExportService;
@RequestMapping("/export.form")
public void exportExcel(HttpServletRequest request, HttpServletResponse response) throws Exception {
List<Student> list = new ArrayList<Student>();
list.add(new Student(1000, "zhangsan", "20"));
list.add(new Student(1001, "lisi", "23"));
list.add(new Student(1002, "wangwu", "25"));
HSSFWorkbook wb = studentExportService.export(list);
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment;filename=student.xls");
OutputStream ouputStream = response.getOutputStream();
wb.write(ouputStream);
ouputStream.flush();
ouputStream.close();
}
}
serivice接口声明:
package net.dagongsoft.platform.poi.service;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import net.dagongsoft.platform.poi.entity.Student;
public interface StudentExportService {
HSSFWorkbook export(List<Student> list);
}
service实现类:
package net.dagongsoft.platform.poi.service.impl;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.stereotype.Service;
import net.dagongsoft.platform.poi.entity.Student;
import net.dagongsoft.platform.poi.service.StudentExportService;
@Service
public class StudentExportServiceImpl implements StudentExportService {
String[] excelHeader = { "Id", "Name", "Age" };
@Override
public HSSFWorkbook export(List<Student> list) {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("Student");
HSSFRow row = sheet.createRow((int) 0);
HSSFCellStyle style = wb.createCellStyle();
for (int i = 0; i < excelHeader.length; i++) {
HSSFCell cell = row.createCell(i);
cell.setCellValue(excelHeader[i]);
cell.setCellStyle(style);
sheet.autoSizeColumn(i);
// sheet.SetColumnWidth(i, 100 * 256);
}
for (int i = 0; i < list.size(); i++) {
row = sheet.createRow(i + 1);
Student student = list.get(i);
row.createCell(0).setCellValue(student.getId());
row.createCell(1).setCellValue(student.getName());
row.createCell(2).setCellValue(student.getAge());
}
return wb;
}
}
标签:name 进制 san put header pac obj xlsx pat
原文地址:http://www.cnblogs.com/Nicer/p/6971413.html