import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import readMSContent.ExcelReader;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
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;
import org.apache.poi.ss.usermodel.Row;
public class Excel03Writer {
/**
* 设置excel文档样式
* @param workbook excel03文件
* @param isHeader 是否有头部信息
* @return HSSFCellStyle
*/
public static HSSFCellStyle getCellStyle(HSSFWorkbook workbook,boolean isHeader){
HSSFCellStyle style = workbook.createCellStyle();
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
style.setBorderTop(HSSFCellStyle.BORDER_THIN);
style.setLocked(true);
if (isHeader) {
style.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
HSSFFont font = workbook.createFont();
font.setColor(HSSFColor.BLACK.index);
font.setFontHeightInPoints((short) 12);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
style.setFont(font);
}
return style;
}
/**
* 生成excel的头
* @param workbook excel
* @param sheet 表
* @param headerColumns 表头信息内容
*/
public static void generateHeader(HSSFWorkbook workbook,HSSFSheet sheet,String[] headerColumns){
HSSFCellStyle style = getCellStyle(workbook,true);
Row row = sheet.createRow(0);
row.setHeightInPoints(30);
for(int i=0;i<headerColumns.length;i++){
Cell cell = row.createCell(i);
String[] column = headerColumns[i].split("_#_");
sheet.setColumnWidth(i, Integer.valueOf(column[1]));
cell.setCellValue(column[0]);
cell.setCellStyle(style);
}
}
/**
* 将data内容的数据写入file这个Excel文件中
* @param file 保存路径
* @param data 要保存的内容
*/
public static void writeXLS(String file,ArrayList<ArrayList<String>> data){
try{
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
HSSFCellStyle style = getCellStyle(workbook,false);
int rowNum = 0;
for(ArrayList<String> list:data){
Row row = sheet.createRow(rowNum++);
row.setHeightInPoints(25);
for(int i=0;i<list.size();i++){
Cell cell = row.createCell(i);
cell.setCellStyle(style);
cell.setCellValue(list.get(i));
}
}
FileOutputStream fileOut = new FileOutputStream(file);
workbook.write(fileOut);
fileOut.close();
} catch (FileNotFoundException ex) {
Logger.getLogger(Excel03Writer.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Excel03Writer.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
* 将data内容的数据写入file这个Excel文件的sheetName表中,并写好头部内容
* @param file 保存文件
* @param sheetName 表名
* @param data 数据
* @param headerColumns 表头信息
*/
public static void writeXLS(String file,String sheetName,ArrayList<ArrayList<String>> data,
String[] headerColumns){
try{
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet(sheetName);
generateHeader(workbook,sheet,headerColumns);
HSSFCellStyle style = getCellStyle(workbook,false);
int rowNum = 0;
for(ArrayList<String> list:data){
rowNum++;
Row row = sheet.createRow(rowNum);
row.setHeightInPoints(25);
for(int i=0;i<list.size();i++){
Cell cell = row.createCell(i);
cell.setCellStyle(style);
cell.setCellValue(list.get(i));
}
}
FileOutputStream fileOut = new FileOutputStream(file);
workbook.write(fileOut);
fileOut.close();
} catch (FileNotFoundException ex) {
Logger.getLogger(Excel03Writer.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Excel03Writer.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static void main(String args[]){
String file="E:\\test.xlsx";
ArrayList<ArrayList<String>> data=ExcelReader.readXLSX(file);
String[] headers={"User Name_#_3000","Address_#_7000"};
writeXLS("./test.xls","test",data,headers);
}
}
要利用POI生成Excel07文件,只需要把上面的代码中所有的HSSF的H改成X,就可以了,这样调用的就是针对Excel07的Excel类了。