Apache POI 操纵 Excel 自动换行 HeaderStyle DataStyle

来源:互联网 发布:gta5n卡优化设置 编辑:程序博客网 时间:2024/05/20 16:41

Apache POI API 程序员为他们的那些涉及 Excel 工作簿的类选择了一个不寻常的命名惯例:他们使用前缀 HSSF。根据它的 JavaDocs,这个前缀实际代表 Horrible Spread Sheet Format。实际上,根据 Wikipedia,POI 最初代表 Poor Obfuscation Implementation。谁说程序员没有幽默感?

HSSF 类用于处理 2007 版之前的 Excel(即 .xls 文件)。另一组类 — XSSF — 用于处理 Excel 2007 或更高版本(即 .xlsx 文件)。但是,还有一组类 — SS 类 — 用于处理上述两种版本。为简单起见,本文使用 HSSF 类。您下载的 Eclipse 项目中的 Readme.txt 文件中指出了使用其他类的代码样例。
 
代码示例:
import java.io.File;import java.io.FileOutputStream;import java.io.OutputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.Statement;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.apache.poi.ss.usermodel.Cell;/**   * @Title: DataIntoExcel.java * @Package  * @Description: 从MySQL获取数据导入Excel * @author DK.BurNIng * @date 2012-8-10 下午4:32:41 * @copyright 中国联通系统集成有限公司山东省分公司 版权所有 *//** * @ClassName: DataIntoExcel * @author DK.BurNIng * @date 2012-8-10 下午4:32:41 * @version V1.0 *  */public class DataIntoExcel {public static void main(String[] args) throws Exception {Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://10.72.67.220:3306/income_new";Connection conn = DriverManager.getConnection(url, "income", "income");Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("select * from g_role");ResultSetMetaData data = rs.getMetaData();HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet1 = wb.createSheet("sheet1");HSSFRow row = sheet1.createRow(0);for (int i = 0; i < data.getColumnCount(); i++) {@SuppressWarnings("deprecation")Cell cell = row.createCell((short) i);HSSFCellStyle headerStyle = wb.createCellStyle();headerStyle.setFillForegroundColor(HSSFColor.SKY_BLUE.index);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 = wb.createFont();headerFont.setColor(HSSFColor.VIOLET.index);headerFont.setFontHeightInPoints((short) 10);headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);headerStyle.setFont(headerFont);cell.setCellStyle(headerStyle);cell.setCellValue(data.getColumnName(i + 1));}for (int x = 1; rs.next(); x++) {row = sheet1.createRow(x);for (int j = 0; j < data.getColumnCount(); j++) {Cell cell = row.createCell(j);HSSFCellStyle dataCellStyle = wb.createCellStyle();dataCellStyle.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);dataCellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);dataCellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);dataCellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);dataCellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);dataCellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);dataCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);dataCellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);HSSFFont dataCellFont = wb.createFont();dataCellFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);dataCellStyle.setFont(dataCellFont);cell.setCellStyle(dataCellStyle);cell.setCellValue(rs.getString(j + 1));}}for (int i = 0; i < data.getColumnCount(); i++) {sheet1.autoSizeColumn(i + 1);}OutputStream output = new FileOutputStream(new File("C:\\excel\\catalog.xls"));wb.write(output);}}

 

原创粉丝点击