使用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!