POI格式化Cell樣式

package my.excel;   
  
import java.io.FileOutputStream;   
  
import org.apache.poi.ss.usermodel.Cell;   
import org.apache.poi.ss.usermodel.CellStyle;   
import org.apache.poi.ss.usermodel.Font;   
import org.apache.poi.ss.usermodel.Row;   
import org.apache.poi.ss.usermodel.Sheet;   
import org.apache.poi.ss.usermodel.Workbook;   
import org.apache.poi.ss.util.CellRangeAddress;   
import org.apache.poi.xssf.usermodel.XSSFCellStyle;   
import org.apache.poi.xssf.usermodel.XSSFColor;   
import org.apache.poi.xssf.usermodel.XSSFWorkbook;   
  
 
public class CellFormatExcel {   
       
    public static void main(String[] args) {   
        try {   
            // 建立Excel表格工做簿   
            Workbook wb = new XSSFWorkbook();   
            Sheet sheet = wb.createSheet("表格單元格格式化");   
               
            //============================   
            //       設置單元格的字體   
            //============================   
            Row ztRow = sheet.createRow((short)0);   
            Cell ztCell = ztRow.createCell(0);   
            ztCell.setCellValue("中國");   
            // 建立單元格樣式對象   
            XSSFCellStyle ztStyle = (XSSFCellStyle) wb.createCellStyle();   
            // 建立字體對象   
            Font ztFont = wb.createFont();   
            ztFont.setItalic(true);                     // 設置字體爲斜體字   
            ztFont.setColor(Font.COLOR_RED);            // 將字體設置爲「紅色」   
            ztFont.setFontHeightInPoints((short)22);    // 將字體大小設置爲18px   
            ztFont.setFontName("華文行楷");             // 將「華文行楷」字體應用到當前單元格上   
            ztFont.setUnderline(Font.U_DOUBLE);         // 添加(Font.U_SINGLE單條下劃線/Font.U_DOUBLE雙條下劃線)  
            ztFont.setBoldweight(Font.BOLDWEIGHT_BOLD); //字體加粗
//          ztFont.setStrikeout(true);                  // 是否添加刪除線   
            ztStyle.setFont(ztFont);                    // 將字體應用到樣式上面   
            ztCell.setCellStyle(ztStyle);               // 樣式應用到該單元格上   
               
            //============================   
            //        設置單元格邊框   
            //============================   
            Row borderRow = sheet.createRow(2);   
            Cell borderCell = borderRow.createCell(1);   
            borderCell.setCellValue("中國");   
            // 建立單元格樣式對象   
            XSSFCellStyle borderStyle = (XSSFCellStyle)wb.createCellStyle();   
            // 設置單元格邊框樣式   
            // CellStyle.BORDER_DOUBLE      雙邊線   
            // CellStyle.BORDER_THIN        細邊線   
            // CellStyle.BORDER_MEDIUM      中等邊線   
            // CellStyle.BORDER_DASHED      虛線邊線   
            // CellStyle.BORDER_HAIR        小圓點虛線邊線   
            // CellStyle.BORDER_THICK       粗邊線   
            borderStyle.setBorderBottom(CellStyle.BORDER_THICK);   
            borderStyle.setBorderTop(CellStyle.BORDER_DASHED);   
            borderStyle.setBorderLeft(CellStyle.BORDER_DOUBLE);   
            borderStyle.setBorderRight(CellStyle.BORDER_THIN);   
               
            // 設置單元格邊框顏色   
            borderStyle.setBottomBorderColor(new XSSFColor(java.awt.Color.RED));   
            borderStyle.setTopBorderColor(new XSSFColor(java.awt.Color.GREEN));   
            borderStyle.setLeftBorderColor(new XSSFColor(java.awt.Color.BLUE));   
               
            borderCell.setCellStyle(borderStyle);   
               
            //============================   
            //      設置單元內容的對齊方式   
            //============================   
            Row alignRow = sheet.createRow(4);   
            Cell alignCell = alignRow.createCell(1);   
            alignCell.setCellValue("中國");   
               
            // 建立單元格樣式對象   
            XSSFCellStyle alignStyle = (XSSFCellStyle)wb.createCellStyle();   
               
            // 設置單元格內容水平對其方式   
            // XSSFCellStyle.ALIGN_CENTER       居中對齊   
            // XSSFCellStyle.ALIGN_LEFT         左對齊   
            // XSSFCellStyle.ALIGN_RIGHT        右對齊   
            alignStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);   
               
            // 設置單元格內容垂直對其方式   
            // XSSFCellStyle.VERTICAL_TOP       上對齊   
            // XSSFCellStyle.VERTICAL_CENTER    中對齊   
            // XSSFCellStyle.VERTICAL_BOTTOM    下對齊   
            alignStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);   
               
            alignCell.setCellStyle(alignStyle);   
               
            //============================   
            //      設置單元格的高度和寬度   
            //============================   
            Row sizeRow = sheet.createRow(6);   
            sizeRow.setHeightInPoints(30);                  // 設置行的高度   
               
            Cell sizeCell = sizeRow.createCell(1);     
            String sizeCellValue = "《Java編程思想》";            // 字符串的長度爲10,表示該字符串中有10個字符,忽略中英文   
            sizeCell.setCellValue(sizeCellValue);       
            // 設置單元格的長度爲sizeCellVlue的長度。而sheet.setColumnWidth使用sizeCellVlue的字節數   
            // sizeCellValue.getBytes().length == 16   
            sheet.setColumnWidth(1, (sizeCellValue.getBytes().length) * 256 );   
               
            //============================   
            //      設置單元格自動換行   
            //============================   
            Row wrapRow = sheet.createRow(8);   
            Cell wrapCell = wrapRow.createCell(2);   
            wrapCell.setCellValue("寶劍鋒從磨礪出,梅花香自苦寒來");   
               
            // 建立單元格樣式對象   
            XSSFCellStyle wrapStyle = (XSSFCellStyle)wb.createCellStyle();   
            wrapStyle.setWrapText(true);                    // 設置單元格內容是否自動換行   
            wrapCell.setCellStyle(wrapStyle);   
               
            //============================   
            //         合併單元格列   
            //============================   
            Row regionRow = sheet.createRow(12);   
            Cell regionCell = regionRow.createCell(0);   
            regionCell.setCellValue("寶劍鋒從磨礪出,梅花香自苦寒來");   
               
            // 合併第十三行中的A、B、C三列   
            CellRangeAddress region = new CellRangeAddress(12, 12, 0, 2); // 參數都是從O開始   
            sheet.addMergedRegion(region);   
               
            //============================   
            //         合併單元格行和列   
            //============================   
            Row regionRow2 = sheet.createRow(13);   
            Cell regionCell2 = regionRow2.createCell(3);   
            String region2Value = "寶劍鋒從磨礪出,梅花香自苦寒來。"  
                                + "採得百花成蜜後,爲誰辛苦爲誰甜。"  
                                + "操千曲然後曉聲,觀千劍然後識器。"  
                                + "察己則能夠知人,察今則能夠知古。";   
            regionCell2.setCellValue(region2Value);   
               
            // 合併第十三行中的A、B、C三列   
            CellRangeAddress region2 = new CellRangeAddress(13, 17, 3, 7); // 參數都是從O開始   
            sheet.addMergedRegion(region2);   
               
            XSSFCellStyle region2Style = (XSSFCellStyle)wb.createCellStyle();   
            region2Style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);   
            region2Style.setWrapText(true);                     // 設置單元格內容是否自動換行   
            regionCell2.setCellStyle(region2Style);   
                           
            //============================   
            // 將Excel文件寫入到磁盤上   
            //============================   
            FileOutputStream is = new FileOutputStream("document/CellFormatExcel.xlsx");   
            wb.write(is);   
            is.close();   
               
            System.out.println("寫入成功,運行結束!");   
        } catch(Exception e) {   
            e.printStackTrace();   
        }   
    }   
}

如何在合併單元格以後設置邊框:java

能夠看到在合併單元格後設置邊框,會致使有些沒有邊框,這是由於咱們只是設置了合併單元格的部分邊框,要把被合併的表格的邊框也設置上,該表格的值能夠設置爲空字符串,也能夠不設置,由於設置值也沒什麼用,由於合併以後,只有第一個被設置的值纔有效.apache

 XSSFCellStyle ztStyle = (XSSFCellStyle) wb.createCellStyle(); 
 ztStyle.setBorderBottom(CellStyle.BORDER_THIN);   //下邊框邊框
 ztStyle.setBorderTop(CellStyle.BORDER_THIN);   //上邊框
 ztStyle.setBorderLeft(CellStyle.BORDER_THIN);   //左邊框
 ztStyle.setBorderRight(CellStyle.BORDER_THIN);   //有邊框
 HSSFRow row=sheet.createRow(2);   //第三行
 sheet.addMergedRegion(new CellRangeAddress(2, 2,1, 5 ); //第三行的 第2列到第6列(即B到F)  合併單元格
 row.createCell(1).setCellValue("答案選項"); //賦值row.createCell(2);
 row.createCell(3);//該單元格雖然被合併了,可是也要建立出來,並設置邊框
 row.createCell(4);//該單元格雖然被合併了,可是也要建立出來,並設置邊框
 row.createCell(5);//該單元格雖然被合併了,可是也要建立出來,並設置邊框
 row.createCell(6).setCellValue("回覆狀況");//該單元格雖然被合併了,可是也要建立出來,並設置邊框
 for (Cell cell : row) {
     cell.setCellStyle(styleBorderThin);//設置該行全部cell的邊框
}
或者是:
sheet.addMergedRegion(new CellRangeAddress(2, 2,1, 5 ); 
 cell = row.createCell(1); 
 cell.setCellValue("答案選項"); // 被合併的起始單元格設置值纔有效,這裏即(1,5)中的單元格,createCell(1)設置值纔有效
 cell.setCellStyle(styleBorderThin);
 cell = row.createCell(2);
 cell.setCellStyle(styleBorderThin);
 cell = row.createCell(3);
 cell.setCellStyle(styleBorderThin);
 cell = row.createCell(4);
 cell.setCellStyle(styleBorderThin);
 cell = row.createCell(5);
 cell.setCellStyle(styleBorderThin);
 cell = row.createCell(6);
 cell.setCellStyle(styleBorderThin);
 或者是:
 sheet.addMergedRegion(new CellRangeAddress(2, 2,1, 5 ); 
 for (int i = 1;i<=5,i++) {
     cell = row.createCell(i);
     if(i == 1){
         cell.setCellValue("答案選項"); 
     }
     cell.setCellStyle(styleBorderThin);//設置該行全部cell的邊框
}

//若是一個單元格同時同時要設置字體居中,加粗或者是自動換行,那麼上面style放到一塊兒就能夠了
XSSFCellStyle Style = (XSSFCellStyle)wb.createCellStyle();
Font ztFont = wb.createFont();   
ztFont.setFontHeightInPoints((short)12);    // 將字體大小設置爲18px   
ztFont.setFontName("仿宋_GB2312");          //字體格式
ztFont.setBoldweight(Font.BOLDWEIGHT_BOLD);//加粗
ztStyle.setFont(ztFont);     //字體應用樣式
ztStyle.setBorderBottom(CellStyle.BORDER_THIN);   //下邊框邊框
ztStyle.setBorderTop(CellStyle.BORDER_THIN);   //上邊框
ztStyle.setBorderLeft(CellStyle.BORDER_THIN);   //左邊框
ztStyle.setBorderRight(CellStyle.BORDER_THIN);   //有邊框 
ztStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);//內容水平居中對齊   
ztStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);  //內容居中對齊
ztStyle.setWrapText(true);                     // 設置單元格內容是否自動換行          
HSSFRow row=sheet.createRow(2);
Cell cell = row.getCell(0);
cell.setCellStyle(ztStyle);
相關文章
相關標籤/搜索