JXL導出EXCEL合併單元格

圖片
這裏寫圖片描述

import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import jxl.CellView;
import jxl.Workbook;
import jxl.biff.DisplayFormat;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.NumberFormats;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

public final static void buildExcel4(OutputStream outStream,
            String mainTitle, String[] titles, List<String> contents) {
        int beginRow = 0;
        try {

            /** **********創建工作簿************ */
            WritableWorkbook workbook = Workbook.createWorkbook(outStream);

            /** **********創建工作表************ */
            WritableSheet sheet = workbook.createSheet("sheet", 0);


            /** **********設置縱橫打印(默認爲縱打)、打印紙***************** */
            SheetSettings sheetset = sheet.getSettings();
            sheetset.setProtected(false);

            /** ************設置單元格字體************** */
            WritableFont NormalFont = new WritableFont(WritableFont.ARIAL, 10);
            WritableFont BoldFont = new WritableFont(WritableFont.ARIAL, 10,
                    WritableFont.BOLD);

            /** ************以下設置三種單元格樣式************ */
            // 用於標題居中
            WritableCellFormat wcf_center = new WritableCellFormat(BoldFont);
            wcf_center.setBorder(Border.ALL, BorderLineStyle.THIN); // 線條
            wcf_center.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直對齊
            wcf_center.setAlignment(Alignment.CENTRE); // 文字水平對齊
            wcf_center.setWrap(false); // 文字是否換行

            // 用於正文居左
            WritableCellFormat wcf_left = new WritableCellFormat(NormalFont);
            wcf_left.setBorder(Border.ALL, BorderLineStyle.THIN); // 線條
            wcf_left.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直對齊
            wcf_left.setAlignment(Alignment.CENTRE); // 文字水平對齊
            wcf_left.setWrap(false); // 文字是否換行

            // excel大標題
            if (mainTitle != null && !mainTitle.equals("")) {
                sheet.mergeCells(0, 0, titles.length - 1, 0);
                sheet.addCell(new Label(0, 0, mainTitle, wcf_center));
                beginRow = beginRow + 1;
            }

            /** ***************以下是EXCEL第一行列標題********************* */
            if (titles != null && titles.length > 1) {
                for (int i = 0; i < titles.length; i++) {
                    sheet.addCell(new Label(i, 1, titles[i], wcf_center));
                }
                beginRow = beginRow + 1;
            }
            /** ***************以下是EXCEL正文數據********************* */
            sheet.addCell(new Label(0, 2,  "1", wcf_left));
            sheet.addCell(new Label(1, 2, "創建紅包數", wcf_left));
            sheet.addCell(new Label(2, 2, "創建紅包數", wcf_left));
            sheet.addCell(new Label(3, 2, "10", wcf_left));
            sheet.addCell(new Label(4, 2, "100", wcf_left));

            sheet.addCell(new Label(0, 3, "2", wcf_left));
            sheet.addCell(new Label(1, 3, "收入", wcf_left));
            sheet.addCell(new Label(2, 3, "發放的紅包總額", wcf_left));
            sheet.addCell(new Label(3, 3, "10", wcf_left));
            sheet.addCell(new Label(4, 3, "100", wcf_left));



            sheet.addCell(new Label(0, 4, "3", wcf_left));
            sheet.addCell(new Label(1, 4, "收入", wcf_left));
            sheet.addCell(new Label(2, 4, "小計", wcf_left));
            sheet.addCell(new Label(3, 4, "10", wcf_left));
            sheet.addCell(new Label(4, 4, "100", wcf_left));

            //合併單元格               
            sheet.mergeCells(1, 3, 1, 4);                 

            sheet.addCell(new Label(0, 5, "4", wcf_left));
            sheet.addCell(new Label(1, 5, "支出", wcf_left));
            sheet.addCell(new Label(2, 5, "失效紅包總額", wcf_left));
            sheet.addCell(new Label(3, 5, "1", wcf_left));
            sheet.addCell(new Label(4, 5, "10", wcf_left));

            sheet.addCell(new Label(0, 6, "5", wcf_left));
            sheet.addCell(new Label(1, 6, "支出", wcf_left));
            sheet.addCell(new Label(2, 6, "使用紅包總額", wcf_left));
            sheet.addCell(new Label(3, 6, "3", wcf_left));
            sheet.addCell(new Label(4, 6, "30", wcf_left));

            sheet.addCell(new Label(0, 7, "6", wcf_left));
            sheet.addCell(new Label(1, 7, "支出", wcf_left));
            sheet.addCell(new Label(2, 7, "小計", wcf_left));
            sheet.addCell(new Label(3, 7, "4", wcf_left));
            sheet.addCell(new Label(4, 7, "40", wcf_left));

            //合併單元格                   
            sheet.mergeCells(1, 5, 1, 7);   

            sheet.addCell(new Label(0, 8, "7", wcf_left));
            sheet.addCell(new Label(1, 8, "剩餘紅包數", wcf_left));
            sheet.addCell(new Label(2, 8, "未使用紅包總額", wcf_left));
            sheet.addCell(new Label(3, 8, "7", wcf_left));
            sheet.addCell(new Label(4, 8, "70", wcf_left));

            sheet.setColumnView(1, 20);
            sheet.setColumnView(2, 20);
            sheet.setColumnView(3, 20);
            sheet.setColumnView(4, 20);
            sheet.setColumnView(5, 20);


    }
            workbook.write();
            workbook.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章