使用POI创建一个简单的 myXls.xls 文件
常用的包为
org.apache.poi.hssf.usermodel.*;
例子:
import java.io.*;
import org.apache.poi.hssf.usermodel.*;
public class
ZoomSheet {
public
ZoomSheet() {
}
public
static void main(String args[])
throws IOException {
HSSFWorkbook wb = new
HSSFWorkbook();
HSSFSheet sheet1 =
wb.createSheet("new sheet");
FileOutputStream fileOut = new
FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();
}
}
类:
HSSFWorkbook
创建 xls 的对象; HSSFWorkbook hw
= new
HSSFWorkbook();
设置分区显示; hw.setRepeatingRowsAndColumns(sheet的index,
行, 列, 行, 列);
HSSFSheet
创建 xls 中的sheet(工作表); HSSFSheet
sheet =
hw.createSheet("sheet1"); sheet1
是 sheet 的名称 可缺省
设置列高;
sheet.setColumnWidth((short)short, (short)short);
HSSFRow 创建 xls 中的行; HSSFRow
row =
sheet.createRow(0);
0 表示第一行
设置行高;
row.setHeight((short)short);
HSSFFont 创建
xls 中的字体; HSSFFont font =
hw.createFont();
设定字体大小;
font.setFontHeightInPoints((short)54);
设定为斜体;
font.setItalic(true);
设定文字删除线;
font.setStrikeout(true);
HSSFCellStyle 设定单元格风格;
HSSFCellStyle style =
wb.createCellStyle();
加入字体; style.setFont(font);
HSSFCell 设定单元格; HSSFCell cell =
row.createCell((short)0);
单元格水平对齐方式;
style.setAlignment(align);
//单元格水平 0 普通 1 左对齐
2 居中 3 右对齐 4
填充 5 正当 6 居中选择
单元格垂直对齐方式;
style.setVerticalAlignment(align);
//单元格垂直 0 居上 1 居中
2 居下 3 正当
单元格下边框为细线; style.setBorderBottom((short)short);
同上一命令一同使用,设置颜色; style.setBottomBorderColor((short)short);
单元格左边框; style.setBorderLeft((short)short);
style.setLeftBorderColor((short)short);
单元格右边框;
style.setBorderRight((short)short);
style.setRightBorderColor((short)short);
单元格上边框;
style.setBorderTop((short)short);
style.setTopBorderColor((short)short);
单元格字符编号(中文);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
//中文
单元格显示的值; cell.setCellValue("中医药");
值的类型有:double,int,String,Date,boolean
单元格背景色;
style.setFillForegroundColor((short)short);
图案类型;
style.setFillPattern((short)short);
单元格合并;
sheet.addMergedRegion(new Region(行,
(short)列, 行, (short)列));
单元格风格加入;
cell.setCellStyle(style);
打印设置
引入包
import org.apache.poi.hssf.usermodel.HSSFPrintSetup;
创建打印设置对象 HSSFPrintSetup hps =
hs.getPrintSetup();
设置A4纸
hps.setPaperSize((short)9);
将页面设置为横向打印模式
hps.setLandscape(true);
设置打印页面为水平居中
sheet.setHorizontallyCenter(true);
设置打印页面为垂直居中 sheet.setVerticallyCenter(true);
网上找到的文章都是说在excel里的文字里加上\n,\n\r,\r\n之类,反正各种各样的都有,更奇怪的是还有人说在单元格里加上<br>
后来我试过用\r后的效里是生成的文件里,你用打开时,并不会换行,如果你用鼠标在单元格里点一下之后就会自动换行。
可以通过如下方式进行,
1. 首先在需要强制换行的单元格里使用poi的样式,并且把样式设定为自动换行
#
HSSFCellStyle cellStyle=workbook.createCellStyle();
# cellStyle.setWrapText(true);
# cell.setCellStyle(cellStyle);
2.
其次是在需要强制换行的单元格,使用\就可以实再强制换行
1. HSSFCell cell =
row.createCell((short)0);
2.
cell.setCellStyle(cellStyle);
cell.setCellValue(new HSSFRichTextString("hello\r\n world!"));
这样就能实现强制换行,
换行后的效里是单元格里强制换行
hello
world!