jxl

 

public class Excel {
    public Excel(String name) {
        this.name = name;
        headerDefaultFormat = getHeaderCellDefaultStyle();
        cellDefaultFormat = getNormalCellStyle();
        minTimeIndex = -1;
        calcMinDefaultTimeIndex();
        create();
    }

    public void calcMinDefaultTimeIndex() {
        final int rows = Cache.rowList.size();
        int index;
        String minTime = "";
        for (index = 0; index < rows; index++) {
            minTime = ((AnalyzedLogResult) Cache.rowList.get(index)).getTotalTime();
            if (minTime.length() != 0) {
                minTimeIndex = index;
                break;
            }
        }

        //Log.d(TAG, "minTimeIndex:" + minTimeIndex);

        int minTimeLength = minTime.length();
        int nextTimeLength;
        for (index = 0; index < rows - 1; index++) {
           // time = ((AnalyzedLogResult) Cache.rowList.get(index)).getTotalTime();
            String nextTime = ((AnalyzedLogResult) Cache.rowList.get(index + 1))
                    .getTotalTime();
            nextTimeLength = nextTime.length();
            //Log.d(TAG, "minTimeLength:" + minTimeLength + ", nextTimeLength:" + nextTimeLength);
            if (nextTimeLength > 3
                    && (minTimeLength > nextTimeLength || (minTimeLength == nextTimeLength && nextTime
                            .compareTo(minTime) < 0))) {
                minTimeLength = nextTimeLength;
                minTimeIndex = index + 1;
                //Log.d(TAG, "minTimeIndex:" + minTimeIndex);
            }
        }
    }

    public void create() {
        int index;
        final int rows = Cache.rowList.size();

        try {
            WritableWorkbook book = Workbook.createWorkbook(new File(name));
            // 生成名为“第一页”的工作表,参数0表示这是第一页
            WritableSheet sheet = book.createSheet("第一页", 0);
            // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
            // sheet.getSettings().setDefaultColumnWidth(10);
            // set row height
            sheet.setRowView(0, 750, false);

            Label label;
            CellView cellView;
            WritableCellFormat headerformat = headerDefaultFormat;
            for (index = 0; index < Constants.TABLE_COLUMN_SIZE; index++) {
                cellView = new CellView();
                cellView.setSize(TABLE_COLUMN_WIDTH[index]);
                sheet.setColumnView(index, cellView);
                if (Constants.TABLE_COLUMN_TOTAL_TIME == index
                        || Constants.TABLE_COLUMN_NO_FAULT == index) {
                    headerformat = new WritableCellFormat(headerDefaultFormat);
                    headerformat.setWrap(true);
                }

                label = new Label(index, 0, TABLE_HEADER[index], headerformat);
                sheet.addCell(label);
            }

            int column;
            String columnContent;
            AnalyzedLogResult result;
            WritableCellFormat cellFormat;
            for (int row = 0; row < rows; row++) {
                result = (AnalyzedLogResult) Cache.rowList.get(row);
                for (column = 0; column < Constants.TABLE_COLUMN_SIZE; column++) {
                    if (minTimeIndex == row && column == Constants.TABLE_COLUMN_NO_FAULT) {
                        cellFormat = new WritableCellFormat(cellDefaultFormat);
                        cellFormat.setBackground(Colour.RED);
                        cellFormat.setAlignment(Alignment.RIGHT);
                    } else if (Constants.TABLE_COLUMN_TOTAL_EVENTS == column
                            || Constants.TABLE_COLUMN_TOTAL_TIME == column
                            || Constants.TABLE_COLUMN_NO_FAULT == column) {
                        cellFormat = new WritableCellFormat(cellDefaultFormat);
                        cellFormat.setAlignment(Alignment.RIGHT);
                    } else if (Constants.TABLE_COLUMN_COMMENTS == column) {
                        cellFormat = new WritableCellFormat(cellDefaultFormat);
                        cellFormat.setAlignment(Alignment.LEFT);
                    } else {
                        cellFormat = cellDefaultFormat;
                    }

                    sheet.setRowView(row + 1, 550, false);
                    columnContent = result.getColumnContent(column);
                    label = new Label(column, row + 1, columnContent, cellFormat);
                    sheet.addCell(label);
                }
            }

            // sheet.mergeCells(0, 1, 0, rows);
            // 生成一个保存数字的单元格 必须使用Number的完整包路径,否则有语法歧义 单元格位置是第二列,第一行,值为789.123
            // Number number = new Number(1, 0, 789.123);
            // sheet.addCell(number);
            // 写入数据并关闭文件
            book.write();
            book.close();
        } catch (Exception e) {
            Log.e(TAG, "Fail to create excel:");
            Log.e(TAG, e.getMessage());
        }
    }  
}

 

posted @ 2016-12-30 16:52  牧 天  阅读(413)  评论(0)    收藏  举报