亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xlsview.java

?? ecside jsp前途分頁的標簽 實現ajax 增刪改查等
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
?/*
 * Copyright 2006-2007 original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.ecside.view;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import jxl.Cell;
import jxl.Workbook;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.CellFormat;
import jxl.format.Colour;
import jxl.write.Blank;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.NumberFormat;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.ecside.common.log.LogHandler;
import org.ecside.core.ECSideContext;
import org.ecside.core.TableModel;
import org.ecside.core.bean.Column;
import org.ecside.core.context.ContextUtils;
import org.ecside.preferences.PreferencesConstants;
import org.ecside.table.calc.CalcResult;
import org.ecside.table.calc.CalcUtils;
import org.ecside.util.ECSideUtils;
import org.ecside.util.ExportViewUtils;
import org.ecside.util.ExtremeUtils;
import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.nodes.TagNode;
import org.htmlparser.tags.TableColumn;
import org.htmlparser.tags.TableRow;
import org.htmlparser.tags.TableTag;
import org.htmlparser.util.NodeList;

/**
 * @author Wei Zijun
 *
 */

/**
 * com.extremecomp.table.view.XlsView.java -
 *
 * @author paul horn
 */

public class XlsView implements View {
    private Log logger = LogFactory.getLog(XlsView.class);
    public static final int WIDTH_MULT = 240; // width per char
    public static final int MIN_CHARS = 8; // minimum char width
    public static final short DEFAULT_FONT_HEIGHT = 8;
    public static final double NON_NUMERIC = -.99999;
    public static final String DEFAULT_MONEY_FORMAT = "$###,###,##0.00";
    public static final String DEFAULT_PERCENT_FORMAT = "##0.0%";
    public static final String NBSP = " ";
    
    public static final int colWidth=15;

    private WritableWorkbook wb;
    private WritableSheet sheet;

    private int rownum;
    private short cellnum;

    private String moneyFormat;
    private String percentFormat;
    private OutputStream outputStream;
    private String encoding;

    public XlsView() {
    	encoding=ECSideContext.ENCODING;
    }

    public void beforeBody(TableModel model) {
        logger.debug("XlsView.init()");
        
		outputStream=ContextUtils.getResponseOutputStream(model.getContext());
		if (outputStream==null){
			outputStream=new ByteArrayOutputStream();
		}
        
        moneyFormat = model.getPreferences().getPreference(PreferencesConstants.TABLE_EXPORTABLE + "format.money");
        if (StringUtils.isEmpty(moneyFormat)) {
            moneyFormat = DEFAULT_MONEY_FORMAT;
        }
        percentFormat = model.getPreferences().getPreference(PreferencesConstants.TABLE_EXPORTABLE + "format.percent");
        if (StringUtils.isEmpty(percentFormat)) {
            percentFormat = DEFAULT_PERCENT_FORMAT;
        }

//        encoding = model.getExportHandler().getCurrentExport().getEncoding();

        
        try {
			wb = Workbook.createWorkbook(outputStream);
	        sheet = wb.createSheet("Export Workbook",0);
	        createHeader(model);
//	        int totalCol=model.getColumnHandler().getColumns().size();

	        rownum++;
	        
	        String extendRowBefore=(String)(model.getTable().getAttribute("ExtendRowBefore"));
	        rownum+=createRow(sheet, getRows(extendRowBefore,encoding),(CellFormat)WritableWorkbook.NORMAL_STYLE, rownum,0)-1;
	        
		} catch (Exception e) {
			LogHandler.errorLog(logger, e);
		}
  
      
    }
    
    
    public static TableRow[] getRows(String inputHtml,String encode) throws Exception {
    	if (StringUtils.isBlank(inputHtml)){
    		return null;
    	}
    	inputHtml=inputHtml.trim();
    	if (!inputHtml.startsWith("<table>")&&!inputHtml.startsWith("<TABLE>") ){
    		inputHtml="<table>"+inputHtml+"</table>";
    	}
        Parser parser = Parser.createParser(inputHtml, encode);
        NodeList nodes = parser.extractAllNodesThatMatch(new NodeFilter() {
            public boolean accept(Node node) {
                return node instanceof TagNode;
            }
        });
        TagNode node = (TagNode)nodes.elementAt(0);
        
        return ((TableTag)node).getRows();
    }
    
    public static int getColumnNum(TableRow row){
    	int totalCol=0;
    	
    	TableColumn[] columns=row.getColumns();
    	
    	for (int cn=0;cn<columns.length;cn++){
    		String colspan=columns[cn].getAttribute("colspan");
    		if (colspan!=null&&colspan.length()>0){
    			try{
    				totalCol+=Integer.parseInt(colspan);
    				continue;
    			}catch(Exception e){}
    		}
    		totalCol++;
    	}
    	
    	return totalCol;
    	
    }
    
    public static int createRow(WritableSheet sheet,TableRow[] tableRows,CellFormat cellFormat,int startRow,int startCol) throws RowsExceededException, WriteException{

    	if (tableRows==null||tableRows.length<1) { return 0; }
    	int totalCol=getColumnNum(tableRows[0]);
//     			CellFormat cellFormat=(CellFormat)WritableWorkbook.NORMAL_STYLE;
    			int colWidth=15;
    		
    		List mergeCells=new ArrayList();
        		for (int rowNo=startRow;rowNo<startRow+tableRows.length;rowNo++ ){
        			int idx=0;
        			for (int colNo=startCol;colNo<startCol+totalCol;colNo++){
        			Cell cell=sheet.getCell(colNo,rowNo);
        			if (cell instanceof Blank) {
						continue;
        			}
        			TableColumn tdBean=((TableRow)tableRows[rowNo-startRow]).getColumns()[idx];
        			String title=ECSideUtils.specialHTMLToShowTEXT(tdBean.toPlainTextString());
        			
    	            Label label=new Label(colNo,rowNo,title,cellFormat); 
    	            sheet.addCell(label);
    	            sheet.setColumnView(colNo, colWidth);
    	            idx++; 	            
        				int ce=Integer.parseInt(ECSideUtils.convertString(tdBean.getAttribute("colspan"),"1"))-1;
        				int re=Integer.parseInt(ECSideUtils.convertString(tdBean.getAttribute("rowspan"),"1"))-1;
        				
        				if (ce>=1 || re>=1){
        					ce=ce<0?0:ce;
        					re=re<0?0:re;
        					mergeCells.add(new int[]{colNo,rowNo,colNo+ce,rowNo+re});
        					if (ce<1 && re>=1){
        		        		for (int srowNo=1;srowNo<=re; srowNo++){
        		    	            sheet.addCell(new Blank(colNo,rowNo+srowNo));
        		    	            sheet.setColumnView(colNo, colWidth);
        		        		}
        		        		continue;
        					}else if (re<1 && ce>=1){
        						for (int scolNo=1;scolNo<=ce;scolNo++){
        		    	            sheet.addCell(new Blank(colNo+scolNo,rowNo));
        		    	            sheet.setColumnView(colNo+scolNo, colWidth);
        		        		}
        		        		colNo+=ce;
        		        		continue;
        					}else if (ce>=1 && re>=1){
	        		    		for (int scolNo=1;scolNo<=ce;scolNo++){
	        		        		for (int srowNo=1;srowNo<=re; srowNo++){
	        		        			sheet.addCell(new Blank(colNo+scolNo,rowNo+srowNo));
	        		    	            sheet.setColumnView(colNo+scolNo, colWidth);
	        		        		}
	        		    		}
	        		    		colNo+=ce;
	        		    		continue;
	        				}
        				}
        			}

        		}

        		for (int i=0;i<mergeCells.size();i++){
        			int[] mc=(int[])mergeCells.get(i);
        			sheet.mergeCells(mc[0],mc[1],mc[2],mc[3]);
        		}

    	return tableRows.length;
    }
    
   
    private void createHeader(TableModel model) throws RowsExceededException, WriteException {
        rownum = 0;
        cellnum = 0;
        int etr=0;
        //HSSFRow row = sheet.createRow(rownum);

        
        WritableCellFormat cellFormat=new WritableCellFormat();
        WritableFont arial10font = new WritableFont(WritableFont.ARIAL,WritableFont.DEFAULT_POINT_SIZE,WritableFont.BOLD); 
        cellFormat.setBackground(Colour.GRAY_25);
        cellFormat.setBorder(Border.ALL, BorderLineStyle.THIN,Colour.GRAY_50);
        cellFormat.setFont(arial10font);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产乱| 六月丁香综合在线视频| 亚洲va天堂va国产va久| 国内成人自拍视频| 欧美在线观看视频在线| 久久久精品国产免大香伊| 亚洲一区二区精品视频| 成人激情开心网| 精品国免费一区二区三区| 亚洲电影一级片| 99国产精品久久久久久久久久久| 欧美一级二级三级乱码| 亚洲一区在线观看视频| 91在线视频观看| 国产日韩亚洲欧美综合| 久久精品国内一区二区三区| 在线亚洲人成电影网站色www| 国产欧美日本一区视频| 久久99国产精品久久99| 3d动漫精品啪啪1区2区免费 | av亚洲精华国产精华精| 欧美大肚乱孕交hd孕妇| 日本不卡不码高清免费观看| 欧美天堂亚洲电影院在线播放| 国产精品二三区| 丰满白嫩尤物一区二区| 2014亚洲片线观看视频免费| 久久se这里有精品| 亚洲精品一线二线三线无人区| 蜜桃视频一区二区三区在线观看| 欧美日韩免费视频| 亚洲图片欧美综合| 欧美日韩视频在线第一区| 一区二区在线观看视频在线观看| 91啦中文在线观看| 一级日本不卡的影视| 色哟哟国产精品| 亚洲午夜免费福利视频| 制服丝袜亚洲色图| 麻豆精品久久久| 欧美电影免费观看完整版| 久久99国产精品免费| 久久久www免费人成精品| 成人一区二区在线观看| 中文字幕字幕中文在线中不卡视频| 不卡高清视频专区| 伊人开心综合网| 欧美日韩国产天堂| 久久99久久久欧美国产| 久久久精品2019中文字幕之3| 成人午夜精品在线| 亚洲成人激情av| 精品黑人一区二区三区久久| 成人毛片老司机大片| 亚洲综合激情小说| 欧美成人vr18sexvr| 国产成人鲁色资源国产91色综 | 亚洲精品在线观看视频| 国产91丝袜在线播放0| 亚洲欧美成人一区二区三区| 欧美日韩国产在线播放网站| 国产高清视频一区| 亚洲午夜三级在线| 久久久精品免费免费| 欧美视频自拍偷拍| 国产乱码精品一区二区三区忘忧草| 国产精品乱子久久久久| 欧美男生操女生| 成人理论电影网| 琪琪一区二区三区| 综合中文字幕亚洲| 精品国产一区a| 91精品福利视频| 狠狠狠色丁香婷婷综合激情| 一区二区在线观看av| 久久综合九色综合97婷婷女人 | 成人av网站大全| 亚洲国产乱码最新视频| 国产视频一区二区在线| 欧美色手机在线观看| 成人性生交大片免费看在线播放| 午夜精品福利一区二区三区蜜桃| 日本一区二区视频在线| 欧美成人vr18sexvr| 欧美日韩一本到| 91在线视频18| 丁香婷婷综合色啪| 麻豆一区二区三| 亚洲午夜在线视频| 国产精品成人网| 国产日韩欧美制服另类| 精品国产成人系列| 在线综合+亚洲+欧美中文字幕| 色悠久久久久综合欧美99| 国产成人小视频| 精品一区二区三区的国产在线播放| 亚洲欧美另类久久久精品2019| 国产三级精品视频| 欧美成人三级电影在线| 欧美日韩aaaaaa| 欧美网站一区二区| 91久久免费观看| 91视频国产观看| 99精品1区2区| 9l国产精品久久久久麻豆| 国产成a人无v码亚洲福利| 久久精品久久久精品美女| 日韩二区在线观看| 丝袜美腿成人在线| 亚洲444eee在线观看| 亚洲午夜久久久久久久久电影院| 亚洲精品一卡二卡| 一区二区在线观看视频在线观看| 国产精品看片你懂得| 中文字幕亚洲不卡| 亚洲精品乱码久久久久久日本蜜臀| 国产精品白丝在线| 亚洲视频免费看| 亚洲精品视频一区| 亚洲午夜成aⅴ人片| 日韩av不卡一区二区| 麻豆成人免费电影| 国产在线播放一区| 成人黄色av电影| 欧美亚一区二区| 7777精品伊人久久久大香线蕉完整版 | 国产成人av电影在线观看| 国产精品一区在线观看你懂的| 国产精品一区二区三区网站| 国产精品18久久久| 99国产精品视频免费观看| 欧美中文字幕一区二区三区亚洲| 欧美日韩一区二区在线观看视频 | 亚洲成人av在线电影| 日本午夜精品视频在线观看 | 91成人网在线| 欧美一区二区成人6969| 日韩精品一区二区三区蜜臀| 国产精品黄色在线观看| 亚洲成人手机在线| 精品在线观看视频| 97久久人人超碰| 欧美卡1卡2卡| 国产亚洲欧洲997久久综合| 国产精品久久久久久久久搜平片| 亚洲一卡二卡三卡四卡无卡久久| 精品一区二区三区在线观看| 成人高清视频在线观看| 欧美乱熟臀69xxxxxx| 国产欧美一区二区在线观看| 一区2区3区在线看| 国产精品系列在线观看| 欧美性感一区二区三区| 久久久久久久综合日本| 亚洲va国产天堂va久久en| 国产精品99久久久| 欧美精品高清视频| 国产精品色呦呦| 蜜桃传媒麻豆第一区在线观看| www.亚洲国产| 欧美一卡2卡三卡4卡5免费| 中文字幕在线观看一区| 免费成人在线观看| 日本电影亚洲天堂一区| 国产午夜三级一区二区三| 天天色 色综合| 色综合天天视频在线观看 | 91精品国产综合久久国产大片| 国产精品三级av| 久久99国产精品尤物| 在线播放91灌醉迷j高跟美女| 国产精品久久久久久妇女6080| 免费欧美在线视频| 欧美制服丝袜第一页| 中文乱码免费一区二区| 裸体健美xxxx欧美裸体表演| 欧美视频一二三区| 亚洲免费av高清| 成人精品gif动图一区| 久久久久综合网| 国精产品一区一区三区mba桃花| 欧美精品xxxxbbbb| 亚洲自拍偷拍综合| 在线区一区二视频| 亚洲精品va在线观看| 99国产欧美另类久久久精品| 国产精品欧美精品| 成人一区二区三区| 国产日韩欧美精品一区| 黄色日韩三级电影| 欧美大白屁股肥臀xxxxxx| 日本成人在线一区| 欧美精品丝袜中出| 天天色综合成人网| 91麻豆精品国产91久久久 | 亚洲一区视频在线观看视频| 91成人免费网站| 五月婷婷激情综合| 在线观看91精品国产麻豆| 免费的成人av|