`
wm920
  • 浏览: 80357 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

数据的导出报表

阅读更多

package com.xjj.supervise.instance.util;

import jxl.write.*;
import jxl.write.biff.RowsExceededException;
import jxl.Workbook;
import jxl.read.biff.BiffException;

import javax.servlet.http.HttpServletRequest;
import javax.naming.NamingException;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.ArrayList;
import java.sql.Timestamp;
import java.sql.SQLException;

import com.xjj.sf.util.SfxzspClient;
import com.xjj.sf.util.TreeItem;
import com.xjj.sf.util.SfUtil;
import com.xjj.sf.item.service.SpIntanceItemService;
import com.xjj.sf.item.dao.ServiceItemAndInstDataDao;
import com.xjj.sf.item.util.IntanceItemUtil;
import com.xjj.sf.ouser.dao.SpUserDao;
import com.xjj.sf.ouser.model.SpUserModel;
import com.xjj.sf.xbase.platform.spring.SpringContext;
import com.xjj.util.SfConstants;
import com.xjj.supervise.instance.model.IntanceModel;
import com.xjj.supervise.instance.service.InstanceProcessService;
import com.xjj.oa.util.OaUtil;

/**
 * Created by IntelliJ IDEA.
 * User: Administrator_xusg
 * Date: 2008-7-29
 * Time: 14:26:52
 * DESP:
 * To change this template use File | Settings | File Templates.
 */
public class InstanceEducelist {
    public static boolean educef = false;
    private static InstanceEducelist instance;
    static{
        instance = new InstanceEducelist();
    }

    public static InstanceEducelist getInstance(){
        if(instance == null) instance = new InstanceEducelist();
        return instance;
    }

    public synchronized String createJxl(HttpServletRequest request){
        educef = false;
        SpIntanceItemService iService = (SpIntanceItemService) SpringContext.getBean("spIntanceItemService");
        InstanceProcessService instanceProcessService = (InstanceProcessService)SpringContext.getBean("instanceProcessService");
        ServiceItemAndInstDataDao itemInstDaoImpl = (ServiceItemAndInstDataDao)SpringContext.getBean("itemInstDaoImpl");
        SpUserDao spUserImpl = (SpUserDao)SpringContext.getBean("spUserImpl");

        String resourcePath = request.getSession().getServletContext().getRealPath(File.separator+"jxlt"+File.separator+"intancelistt.xlt");
        String targetPath = resourcePath.substring(0,resourcePath.lastIndexOf(File.separator));
        targetPath += (File.separator+"xls"+File.separator+System.currentTimeMillis()+".xls");

        File sourceF = new File(resourcePath);
        File targetF = new File(targetPath);

        if(targetF.exists()) targetF.delete();

        //条件开始
        String orgId = "0";
        SfxzspClient client = new SfxzspClient();
        List orglist = client.getAllDepartMentInfo(SfConstants.getString("GROUPID"));  //所有单位
        for(int i=0;i<orglist.size();i++){
            TreeItem orgIds = (TreeItem)orglist.get(i);
            orgId = orgIds.getId();
            break;
        }

        String toOrgId = "";
        if(request.getParameter("toOrgId")!=null){
            toOrgId = request.getParameter("toOrgId");
            orgId = toOrgId;
        }else  toOrgId = orgId;

        List orgItemlist = new ArrayList();
        try {
            orgItemlist = itemInstDaoImpl.getItemlistByOrgId(new Integer(orgId),null,null);  //取出第一个单位的事项
        } catch (Exception e) {
            e.printStackTrace();
        }
        IntanceModel imodel = new IntanceModel();
        if(!orgId.equals("0")&&orgId.length()>0) imodel.setOrgId(Integer.parseInt(orgId));

        String search_name = request.getParameter("search_name");
        String search_instNumber = request.getParameter("search_instNumber");
        String itemId = request.getParameter("itemId");
        String state = request.getParameter("state") ;

        String search_userName = request.getParameter("search_userName");
        String search_declarer = request.getParameter("search_declarer");

        String declareTime = request.getParameter("declareTime");
        String endtime = request.getParameter("endtime");
        String search_all = request.getParameter("search_all");

        if(search_name!=null&&search_name.length()>0){
            search_name = search_name.trim();
            try {
                search_name = new String(search_name.getBytes(),"GBK");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            imodel.setName(search_name);
        }
        if(search_instNumber!=null&&search_instNumber.length()>0) imodel.setInstNumber(search_instNumber);          //事项编号
        if(itemId!=null&&itemId.length()>0&&!itemId.equals("0")) imodel.setServiceId(itemId);                                            //事项ID
        if(state!=null&&state.length()>0&&!state.equals("0")) imodel.setState(Integer.parseInt(state));                                 //状态
        else imodel.setBy1("1,2,4,6,8,9,11,20,21");

        if(search_userName!=null&&search_userName.length()>0){
            search_userName = search_userName.trim();
            try {
                search_userName = new String(search_userName.getBytes(),"GBK");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            imodel.setUserName(search_userName);
        }
        if(search_declarer!=null&&search_declarer.length()>0) imodel.setDeclarer(search_declarer);
        if(declareTime!=null&&declareTime.length()>0){
            String st = declareTime+" 00:00";
            imodel.setDeclareTime(SfUtil.stringToTimestamp(st,null));
        }
        if(endtime!=null&&endtime.length()>0){
            String et = endtime+" 23:58";
            imodel.setDeclareEndTime(SfUtil.stringToTimestamp(et,null));
        }
        if(search_all!=null&&search_all.length()>0){
            search_all = search_all.trim();
            try {
                search_all = new String(search_all.getBytes(),"GBK");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            imodel.setBy6(search_all);
        }
        //条件完成

        Workbook handExcel = null;
        try {
            handExcel = Workbook.getWorkbook(sourceF);
            WritableWorkbook educeExcel = Workbook.createWorkbook(targetF,handExcel);
            WritableSheet targetExcelSheet = educeExcel.getSheet(0);

            //标题头
            String title = "省人民政府政务服务中心办件情况表";
            jxl.write.WritableFont wf = new jxl.write.WritableFont(WritableFont.TIMES,20, WritableFont.BOLD,false);
            WritableCellFormat MainCellFormat = new WritableCellFormat(wf);
            MainCellFormat.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN); //设置 border 格式
            MainCellFormat.setAlignment(jxl.format.Alignment.CENTRE);
            MainCellFormat.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
            MainCellFormat.setWrap(true);

            Label label = new Label(0,0,title,MainCellFormat);
            targetExcelSheet.addCell(label);

            setTimeLabelFormat(1,imodel,targetExcelSheet,label);    //设置时间

            imodel.setWillDate(SfUtil.getDateFormat(new Timestamp(System.currentTimeMillis()),2));
            List datalist = iService.getDataListByModel(imodel,-1,-1,null);
            //写入过程数据
            int position = 3;
            for(int i=0;i<datalist.size();i++){
                IntanceModel model = (IntanceModel)datalist.get(i);
                model.setProcessModel(instanceProcessService.getInstanceProcesslistByIntanceIdState(model.getId(),imodel.getState()));
                model.setInstNumber(model.getInstNumber()==null||model.getInstNumber().equals("null")?"":model.getInstNumber());
                //model.setStateName(IntanceItemUtil.getIntance().getStateImageByTime(model,1));
                model.setBy1(IntanceItemUtil.getIntance().showStateName(model.getState()));
                //model.setBy2(IntanceItemUtil.getIntance().getImageText(model.getStateName()));

                SpUserModel sumodel = spUserImpl.getSpUserModelByCardId(model.getDeclarer());//机构代码取用户类型
                model.setBy7(sumodel==null?"":(sumodel.getCardType().equals("1")?"身份证":"机构代码"));
                model.setBy8(sumodel==null?"":sumodel.getCardId()==null?"":sumodel.getCardId());
                model.setBy9((i+1)+"");

                setDataLabelFormat(position,model,targetExcelSheet,label);
                model.setUserIdName(OaUtil.getUserNameById(model.getUserId()));

                position++;
            }

            educeExcel.write(); //写入Excel对象
            educeExcel.close();
            handExcel.close();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (BiffException e) {
            e.printStackTrace();
        } catch (RowsExceededException e) {
            e.printStackTrace();
        } catch (WriteException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (NamingException e) {
            e.printStackTrace();
        }

        return targetPath;

    }

    /**
     * 设定表格格式
     * @param position
     * @param targetExcelSheet
     * @param label
     * @throws IOException
     * @throws BiffException
     * @throws jxl.write.WriteException
     */
    private void setDataLabelFormat(int position,IntanceModel model,WritableSheet targetExcelSheet,Label label) throws IOException,BiffException, WriteException {
        label = new Label(0,position,model.getBy9());
        targetExcelSheet.addCell(label);
        label = new Label(1,position,model.getDeclarerName());
        targetExcelSheet.addCell(label);
        label = new Label(2,position,model.getName());
        targetExcelSheet.addCell(label);
        label = new Label(3,position,model.getBy5());
        targetExcelSheet.addCell(label);
        label = new Label(4,position,model.getDeclareTime()==null?"":SfUtil.getDateFormat(model.getDeclareTime(),2));
        targetExcelSheet.addCell(label);
        label = new Label(5,position,model.getUserName());
        targetExcelSheet.addCell(label);
        label = new Label(6,position,model.getUserPhone());
        targetExcelSheet.addCell(label);
        label = new Label(7,position,model.getBy7());
        targetExcelSheet.addCell(label);
        label = new Label(8,position,model.getBy8());
        targetExcelSheet.addCell(label);
        label = new Label(9,position,"");
        targetExcelSheet.addCell(label);

        WritableCellFormat BodyCellFormat = new WritableCellFormat();
        BodyCellFormat.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN); //设置 border 格式
        BodyCellFormat.setAlignment(jxl.format.Alignment.CENTRE);
        BodyCellFormat.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
        BodyCellFormat.setWrap(true);

        targetExcelSheet.getWritableCell(0,position).setCellFormat(BodyCellFormat);
        targetExcelSheet.getWritableCell(1,position).setCellFormat(BodyCellFormat);
        targetExcelSheet.getWritableCell(2,position).setCellFormat(BodyCellFormat);
        targetExcelSheet.getWritableCell(3,position).setCellFormat(BodyCellFormat);
        targetExcelSheet.getWritableCell(4,position).setCellFormat(BodyCellFormat);
        targetExcelSheet.getWritableCell(5,position).setCellFormat(BodyCellFormat);
        targetExcelSheet.getWritableCell(6,position).setCellFormat(BodyCellFormat);
        targetExcelSheet.getWritableCell(7,position).setCellFormat(BodyCellFormat);
        targetExcelSheet.getWritableCell(8,position).setCellFormat(BodyCellFormat);
        targetExcelSheet.getWritableCell(9,position).setCellFormat(BodyCellFormat);
    }


    private void setTimeLabelFormat(int position,IntanceModel model,WritableSheet targetExcelSheet,Label label) throws IOException,BiffException, WriteException {
        String startTime = model.getDeclareTime()==null?"":SfUtil.getDateFormat(model.getDeclareTime(),2);
        String endTime = model.getDeclareEndTime()==null?"":SfUtil.getDateFormat(model.getDeclareEndTime(),2);
        label = new Label(1,position,startTime);
        targetExcelSheet.addCell(label);
        label = new Label(3,position,endTime);
        targetExcelSheet.addCell(label);

        WritableCellFormat BodyCellFormat = new WritableCellFormat();
        BodyCellFormat.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN); //设置 border 格式
        BodyCellFormat.setAlignment(jxl.format.Alignment.CENTRE);
        BodyCellFormat.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
        BodyCellFormat.setWrap(true);

        targetExcelSheet.getWritableCell(1,position).setCellFormat(BodyCellFormat);
        targetExcelSheet.getWritableCell(3,position).setCellFormat(BodyCellFormat);
    }
}

分享到:
评论

相关推荐

    组态王历史数据导出EXCEL表格的方法.docx

    组态王历史数据导出EXCEL表格的方法可以分为以下几个步骤:新建画面和报表窗口、添加按钮和命令语言、报表属性和时间属性、变量选择和历史库变量、避免每次保存覆盖数据的解决措施等。通过掌握这些步骤,可以更好地...

    ASP.NET导出报表

    - Excel(XLS)报表是ASP.NET中常见的一种数据导出格式,因为Excel提供了强大的数据处理和分析功能。开发者可以使用C#或VB.NET代码创建XML Spreadsheet文档,或者借助第三方库如NPOI,实现从数据库或其他数据源导出...

    wincc数据导出方法

    WinCC在生产过程中能够收集大量数据,当这些数据需要存档或分析时,通常需要将数据导出到文件中,以便于进一步处理或记录。本文将详细介绍如何将WinCC中的历史数据导出到Excel CSV文件中。 首先,要理解的是,从...

    ireport导出报表.pdf

    在本部分中,我们可以识别出关于iReport工具导出报表为PDF格式的一系列操作细节和知识点。iReport是一个报表设计工具,可以用来创建复杂的报表,并且可以将报表导出为多种格式,包括PDF和HTML。下面,我们将详细讲解...

    Elasticsearch数据导出工具

    Elasticsearch数据导出工具是一种高效实用的解决方案,它允许用户方便地从Elasticsearch(ES)集群中抽取数据,并将其导出到不同的目标,如MySQL数据库或本地文件系统。这款工具尤其适用于需要进行数据迁移、备份或...

    导出报表至excel图片及数据

    1. **数据导出**:在报表系统中,数据导出通常包括选择要导出的字段、筛选条件和时间范围。系统会根据这些参数生成一个包含所有选定数据的文件。对于“导出报表至Excel”,这意味着不仅导出数值数据,还包括报表中的...

    用友NC财务软件数据导出方法.doc

    用友NC财务软件数据导出方法 用友NC财务软件是一款功能强大且广泛应用于企业财务管理的财务软件。随着企业数据的增加和复杂性,数据导出变得越来越重要。因此,本文将详细介绍用友NC财务软件数据导出方法,旨在帮助...

    使用jasperreports制作报表(导出pdf excel html)

    JasperReports是一款开源的Java报表库,它允许开发者创建、设计和显示复杂的报告。... ### 一、JasperReports...通过Java代码与报表模板的结合,可以方便地在应用程序中动态生成和导出报表,满足各种格式和数据需求。

    数据导出控件,导出各种数据

    数据导出控件是软件开发中的一个重要工具,它允许用户将各种类型的数据高效地导出到不同的文件格式中。在标题“数据导出控件,导出各种数据”中,核心概念是“数据导出控件”,这通常是指一种软件组件,能够方便地将...

    导出报表(全)

    本项目主题为“导出报表(全)”,涉及到的技术栈是SpringMVC和iReport,用于实现PDF和Excel格式的报表导出。下面将详细阐述这两个技术以及如何将它们结合使用。 **SpringMVC** SpringMVC是Spring框架的一个模块,...

    cognos 导出报表的IE设置

    然而,在使用Cognos导出报表到Excel的过程中,可能会遇到一些问题,比如导出失败或者无法正确显示的情况。这些问题往往与用户的浏览器设置有关。本文将详细介绍如何通过调整Internet Explorer(IE)的设置来确保...

    WINCC导出报表

    本篇文章将详细介绍如何在WinCC中导出报表以及涉及的VB脚本知识。 首先,WinCC报表功能允许用户自定义报告模板,这些模板可以是Excel格式,因为Excel广泛用于数据分析和图表展示。在WinCC中,用户可以通过设计视图...

    如何将WinCC归档的历史数据导出到EXCEL CSV文件.zip

    有时,用户可能需要将这些历史数据导出到更通用的格式,如Excel CSV文件,以便进行进一步的数据分析和处理。下面,我们将详细介绍如何实现这个过程。 首先,理解WinCC的数据归档系统。WinCC的归档功能允许用户定义...

    QT操作word导出报表

    QT操作Word导出报表是一种常见的任务,特别是在软件开发中,我们可能需要自动生成报告或文档。QT是一个跨平台的C++开发框架,它提供了一系列工具和库,使得开发者能够创建功能丰富的桌面应用,包括与Office套件如...

    java 导出报表实例

    *********************************** *附件Table和生成Excel模块 *开发者:舒适 /************************... 传递的数据的列数必须等于该报表表头的列数否则会出现运行异常(一般情况下为相等除非后台数据出现错误)

    表格数据导出

    在IT领域,表格数据导出是一项常见的操作,尤其在数据分析、报表制作以及信息管理中扮演着重要角色。这里我们将深入探讨导出表格数据的过程、涉及的文件格式以及使用Excel进行导出的相关知识。 1. **表格数据导出**...

    数据窗口导出工具

    本话题将深入探讨“数据窗口导出工具”,这是一种专门针对PB数据窗口设计的实用软件,能够帮助用户方便地将数据窗口中的数据导出为各种格式,以满足数据分析、报告生成或数据共享的需求。 首先,我们来理解一下数据...

    mcgs数据导出到U盘样例程序

    可以将历史报警数据、日志数据、历史数据可全部导出也可按设定时间内导出到U盘,详细教程可查看我博客更多关于mcgs功能设置

Global site tag (gtag.js) - Google Analytics