java jxl excel操作

  public void bprint_actiontage() {
        try {
                         DateFormat formatdate1 = new SimpleDateFormat("dd/MM/yyyy");
            DateFormat formatdate2 = new SimpleDateFormat("yyMMddhhmmss");

           //excel路徑和文件名稱

            String pdfFileName = "E:\\build\\web\\resources\\" + formatdate2.format(new Date()) + ".xls";

            //插入圖片的路徑 必須是png格式的圖片
             String logo = "E:\\build\\web\\resources\\logo.png";
            String pringTitel = "打印標題";

           //創建excel
            WritableWorkbook workbook = Workbook.createWorkbook(new File(pdfFileName));


            WritableFont wf12 = new WritableFont(WritableFont.createFont("宋體"), 12, WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE);
            WritableFont wf10 = new WritableFont(WritableFont.createFont("宋體"), 10, WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE);
            WritableFont wf16 = new WritableFont(WritableFont.createFont("宋體"), 16, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE);
            WritableFont wfb12 = new WritableFont(WritableFont.createFont("宋體"), 12, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE);             WritableCellFormat flt16 = new WritableCellFormat(wf16);
            flt16.setAlignment(jxl.format.Alignment.LEFT);
            WritableCellFormat frtbl12 = new WritableCellFormat(wfb12);
            frtbl12.setAlignment(jxl.format.Alignment.RIGHT);
            WritableCellFormat flt10 = new WritableCellFormat(wf10);
            flt10.setAlignment(jxl.format.Alignment.LEFT);
            WritableCellFormat flt12 = new WritableCellFormat(wf12);
            flt12.setAlignment(jxl.format.Alignment.LEFT);


            WritableCellFormat bordelrt = new WritableCellFormat(wf12);

            bordelrt.setWrap(true);//是否自動換行
            bordelrt.setBorder(jxl.format.Border.LEFT, jxl.format.BorderLineStyle.THIN);//設置邊框
            bordelrt.setBorder(jxl.format.Border.RIGHT, jxl.format.BorderLineStyle.THIN);


            WritableCellFormat bordelrtbot = new WritableCellFormat(wf12);
            bordelrtbot.setBorder(jxl.format.Border.LEFT, jxl.format.BorderLineStyle.THIN);
            bordelrtbot.setBorder(jxl.format.Border.RIGHT, jxl.format.BorderLineStyle.THIN);
            bordelrtbot.setBorder(jxl.format.Border.BOTTOM, jxl.format.BorderLineStyle.THIN);
            bordelrtbot.setWrap(true);


            WritableCellFormat bordeall = new WritableCellFormat(wf12);
            bordeall.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);
            bordeall.setWrap(true);
            bordeall.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//設置對垂直對齊方式
            bordeall.setAlignment(jxl.format.Alignment.LEFT);//設置水平對齊方式


            WritableSheet sheet = workbook.createSheet("pricetag", 0); // 添加工作表
            SheetSettings sheetset = sheet.getSettings();
            sheetset.setLeftMargin(Double.parseDouble("0"));
            sheetset.setRightMargin(Double.parseDouble("0"));
            sheetset.setTopMargin(Double.parseDouble("0.5"));
            sheetset.setBottomMargin(Double.parseDouble("0.6"));
            sheetset.setFooterMargin(Double.parseDouble("0.2"));//設置邊距
            sheetset.setShowGridLines(false);//是否顯示網格線
            sheetset.setPageStart(1);//開始頁碼
            sheetset.setPrintTitlesRow(1, 11);//設置固定打印標題


            //設置頁腳
            HeaderFooter hd = new HeaderFooter();
            hd.getRight().append("Page ");
            hd.getRight().appendPageNumber();//設置當前頁
            hd.getRight().append(" of ");
            hd.getRight().appendTotalPages();//設置總頁數
            sheetset.setFooter(hd);//添加頁腳
            //列, 行,內容
            sheet.setColumnView(0, 2); // 設置列的寬度
            sheet.setColumnView(1, 3); // 設置列的寬度
            sheet.setRowView(0, 260); // 設置行的高度
            sheet.setRowView(5, 100); // 設置行的高度
            sheet.setColumnView(4, 2); // 設置列的寬度
            sheet.setColumnView(5, 6); // 設置列的寬度
            sheet.setColumnView(6, 8); // 設置列的寬度
            sheet.setColumnView(8, 9); // 設置列的寬度
            sheet.setColumnView(9, 9); // 設置列的寬度
            sheet.setColumnView(10, 6); // 設置列的寬度
            sheet.setColumnView(11, 4); // 設置列的寬度
            sheet.setColumnView(12, 4); // 設置列的寬度 
            sheet.setColumnView(13, 4); // 設置列的寬度
            sheet.setColumnView(15, 10); // 設置列的寬度
            sheet.setColumnView(16, 1); // 設置列的寬度


            //報表頭部信息 begin
            //列,行,列,行
            sheet.mergeCells(1, 1, 2, 4);
            sheet.mergeCells(3, 1, 16, 1);
            sheet.mergeCells(3, 2, 16, 2);
            sheet.mergeCells(3, 3, 7, 3);
            sheet.mergeCells(8, 3, 12, 3);
            sheet.mergeCells(3, 4, 7, 3);
            sheet.mergeCells(8, 4, 12, 3);
            sheet.mergeCells(5, 6, 16, 6);

            File file = new File(logo); // 獲得圖片
            WritableImage image = new WritableImage(1, 1, 2, 4, file); // 設置圖片顯示位置 起始座標,所佔單元格。
            sheet.addImage(image); // 加載圖片  
            Label label = new Label(3, 1, "XXXXXXXXXXXXXXXXXXXXXXX", flt16);
            sheet.addCell(label);
            label = new Label(3, 2, "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.", flt10);
            sheet.addCell(label);
            label = new Label(3, 3, "Tel: XXXXXXXXXX", flt12);
            sheet.addCell(label);
            label = new Label(8, 3, "Fax: XXXXXXXXXX", flt12);
            sheet.addCell(label);
            label = new Label(3, 4, "XXXXXX XXXXXX", flt12);
            sheet.addCell(label);
            label = new Label(8, 4, "XXXXXX XXXXXXX", flt12);
            sheet.addCell(label);
            label = new Label(5, 6, pringTitel, frtbl12);
            sheet.addCell(label);
            //報表頭部信息 end

            //報價 總 信息 begin
            sheet.mergeCells(1, 7, 8, 7);
            sheet.mergeCells(9, 7, 11, 7);
            sheet.mergeCells(12, 7, 16, 7);
            sheet.mergeCells(1, 8, 8, 8);
            sheet.mergeCells(9, 8, 11, 8);
            sheet.mergeCells(12, 8, 16, 8);
            sheet.mergeCells(1, 9, 16, 9);
            sheet.mergeCells(2, 10, 3, 10);
            sheet.mergeCells(4, 10, 9, 10);
            sheet.mergeCells(11, 10, 13, 10);
            sheet.mergeCells(14, 10, 16, 10);

            label = new Label(1, 7, "XXXXXXXXX", bordeall);
            sheet.addCell(label);
            label = new Label(9, 7, "XXXXX", bordeall);
            sheet.addCell(label);
            label = new Label(12, 7, "XXXXX", bordeall);
            sheet.addCell(label);
            label = new Label(1, 8, "XXXXX", bordeall);
            sheet.addCell(label);
            label = new Label(9, 8, "XXXX", bordeall);
            sheet.addCell(label);
            label = new Label(12, 8, "XXXXXXX" + formatdate1.format(new Date()), bordeall);
            sheet.addCell(label);
            label = new Label(1, 9, "XXXX", bordeall);
            sheet.addCell(label);
            label = new Label(1, 10, "XXX", bordeall);
            sheet.addCell(label);
            label = new Label(2, 10, "XXXXX", bordeall);
            sheet.addCell(label);
            label = new Label(4, 10, "XXXXXX", bordeall);
            sheet.addCell(label);
            label = new Label(10, 10, "XXXXX", bordeall);
            sheet.addCell(label);
            label = new Label(11, 10, "XXXXX", bordeall);
            sheet.addCell(label);
            label = new Label(14, 10, "XXXXX", bordeall);
            sheet.addCell(label);
            //報價 總 信息 end

            int row = 10;
            for (int i = 1; i < 12; i++) {
                //第一行
                label = new Label(1, row + 1, "", bordelrt);
                sheet.addCell(label);

                sheet.mergeCells(2, row + 1, 3, row + 1);
                label = new Label(2, row + 1, "", bordelrt);
                sheet.addCell(label);


                sheet.mergeCells(4, row + 1, 9, row + 1);
                String cont1 = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

                cont1 = cont1.toUpperCase();
                 if (cont1.length() > 35) {
                    int d = cont1.length() / 35;
                     if (cont1.length() % 35 > 0) {
                        d = d + 1;
                    }            

                      sheet.setRowView(row + 1, 300 * d); // 設置行的高度 

               }
                label = new Label(4, row + 1, cont1.toUpperCase(), bordelrt);
                sheet.addCell(label);

              

                label = new Label(10, row + 1, "", bordelrt);
                sheet.addCell(label);

                sheet.mergeCells(11, row + 1, 13, row + 1);
                label = new Label(11, row + 1, "", bordelrt);
                sheet.addCell(label);

                image = new WritableImage(14, row + 1, 2, 4, file); // 設置圖片顯示位置 起始座標,所佔單元格。
                sheet.addImage(image); // 加載圖片 

                sheet.mergeCells(16, row + 1, 16, row + 4);
                label = new Label(16, row + 1, "", bordeall);
                sheet.addCell(label);

                //第二行
                label = new Label(1, row + 2, String.valueOf(i), bordelrt);
                sheet.addCell(label);

                sheet.mergeCells(2, row + 2, 3, row + 2);
                label = new Label(2, row + 2, "XXXXXXXXXX", bordelrt);
                sheet.addCell(label);

                sheet.mergeCells(4, row + 2, 9, row + 2);
                label = new Label(4, row + 2, "XXXXXXXXX", bordelrt);
                sheet.addCell(label);

                label = new Label(10, row + 2, "XXXXX", bordelrt);
                sheet.addCell(label);

                sheet.mergeCells(11, row + 2, 13, row + 2);
                label = new Label(11, row + 2, "XXXX", bordelrt);
                sheet.addCell(label);

                //第三行
                label = new Label(1, row + 3, "", bordelrt);
                sheet.addCell(label);

                sheet.mergeCells(2, row + 3, 3, row + 3);
                label = new Label(2, row + 3, "XXXXXXXX", bordelrt);
                sheet.addCell(label);

                sheet.mergeCells(4, row + 3, 9, row + 3);
                label = new Label(4, row + 3, "XXXXXXXXX", bordelrt);
                sheet.addCell(label);

                label = new Label(10, row + 3, "", bordelrt);
                sheet.addCell(label);

                sheet.mergeCells(11, row + 3, 13, row + 3);
                label = new Label(11, row + 3, "", bordelrt);
                sheet.addCell(label);

                //第四行
                label = new Label(1, row + 4, "", bordelrtbot);
                sheet.addCell(label);

                sheet.mergeCells(2, row + 4, 3, row + 4);
                label = new Label(2, row + 4, "", bordelrtbot);
                sheet.addCell(label);

                sheet.mergeCells(4, row + 4, 9, row + 4);
                label = new Label(4, row + 4, "", bordelrtbot);
                sheet.addCell(label);

                label = new Label(10, row + 4, "", bordelrtbot);
                sheet.addCell(label);

                sheet.mergeCells(11, row + 4, 13, row + 4);
                label = new Label(11, row + 4, "", bordelrtbot);
                sheet.addCell(label);

                sheet.setRowView(row + 5, 50); // 設置行的高度
                sheet.mergeCells(1, row + 5, 16, row + 5);
                label = new Label(1, row + 5, "", bordeall);
                sheet.addCell(label);

                row = row + 5;
            }

            //foot信息 begin 
            row = row + 1;
            sheet.setRowView(row, 450); // 設置行的高度
            sheet.setRowView(row + 1, 450); // 設置行的高度
            sheet.mergeCells(1, row, 9, row + 1);
            label = new Label(1, row, "XXXXXXXXXXXXXXXXXXXXXXXXXX\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\nXXXXXXXXXXXXX.", bordeall);
            sheet.addCell(label);

            sheet.mergeCells(10, row, 13, row);
            label = new Label(10, row, "XXXX", bordeall);
            sheet.addCell(label);

            sheet.mergeCells(14, row, 16, row);
            label = new Label(14, row, "XXX", bordeall);
            sheet.addCell(label);

            sheet.mergeCells(10, row + 1, 13, row + 1);
            label = new Label(10, row + 1, "XXXX", bordeall);
            sheet.addCell(label);
            sheet.mergeCells(14, row + 1, 16, row + 1);
            label = new Label(14, row + 1, "XXXXXX", bordeall);
            sheet.addCell(label);
            //foot信息 end

            workbook.write();
            workbook.close();
               return;
        } catch (Exception ex1) {
            ex1.printStackTrace();
        }
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章