导出数据到EXL表格中

项目使用的是hhi框架,通过struts访问到action

xml文件:

<action name="fabAttributedaochu" class="com.FabAttributeAction" method="daochu" >
    <result  name="success"   type="stream">
              <!-- 指定下载文件的文件类型 -->
              <param  name="contentType">xls</param>
              <!-- 指定下载文件的文件位置  -->
              <param name="inputName">downExpFile</param>
              <!-- 指定下载文件的文件名 -->
              <param name="contentDisposition">attachment;filename="${contentDisposition}"</param>
              <!-- 指定下载文件的缓冲大小 -->
              <param   name="bufferSize">4096</param>
        </result>
</action>

action文件:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

private String contentDisposition;//一定要有的属性
public String getContentDisposition() {   //get   return contentDisposition;}
public void setContentDisposition(String contentDisposition) {  //set    this.contentDisposition = contentDisposition;    }

public String  daochu() throws Exception{//前台按导出键跳转到这个方法,可以在这里设一些判断条件是否继续
    return success;
}
public InputStream getDownExpFile() throws Exception{//根据xml的返回定义了一个get值,进入之个方法,
    contentDisposition = java.net.URLEncoder.encode("buyOrder.xls","UTF-8");//指定一个文件的文件名
    return fabAttributeBo.daochu();//调用bo层数据返回一个InputStream对象
}

逻辑业务层(bo):

     /**
     * 导出
     * @throws BOException
     * @throws FileNotFoundException
     * */
public FileInputStream daochu() throws BOException {
    try {
        List<FabAttributeVo>  list =this.getFabAttributeDao().selectFabAttribute(null).getList();//导出数据的集合--数据
        Integer rowNumber =list.size();
        //创建新的ExCEL
        HSSFWorkbook workbook =  new HSSFWorkbook();
        //创建工作表名
        HSSFSheet sheet = workbook.createSheet("标签1");
        //定义行
        HSSFRow  row =null;
        //TITlelist为单元格明
        List<String >  titleList = this.obtainTitleList();//调用已定义好的列抬头
        //用数组定义单元格
        HSSFCell [] hssfCells = new HSSFCell[titleList.size()];
        //设置单元格格式
        HSSFCellStyle cellStyle =  workbook.createCellStyle();
        HSSFDataFormat format = workbook.createDataFormat();
        cellStyle.setDataFormat(format.getFormat("@"));
        //下面是创建首行
        row =sheet.createRow(0);
        for(int j=0;j<titleList.size();j++){
            hssfCells[j] = row.createCell(j);
            hssfCells[j].setCellStyle(cellStyle);
            hssfCells[j].setCellValue(titleList.get(j));
        }
        //下面是创建数据行
        for (int i = 1; rowNumber-i>=0; i++) {
            row = sheet.createRow(i);
            for (int j = 0; j < titleList.size(); j++) {
                hssfCells[j]=row.createCell(j);
                hssfCells[j].setCellStyle(cellStyle);
                hssfCells[j].setCellType(HSSFCell.CELL_TYPE_STRING);
                switch (j) {//每一个行需要插入拿一条
                    case 0:hssfCells[j].setCellValue(list.get(i-1).getAttr_id());break;
                    case 1:hssfCells[j].setCellValue(list.get(i-1).getType_name());break;
                    case 2:hssfCells[j].setCellValue(list.get(i-1).getAttr_name());break;
                    case 3:hssfCells[j].setCellValue(list.get(i-1).getAttr_input_type());break;
                    case 4:hssfCells[j].setCellValue(list.get(i-1).getAttr_values());break;
                    case 5:hssfCells[j].setCellValue(list.get(i-1).getSortOrder());break;
                }
            }
        }

            File file =new File(this.getClass().getClassLoader().getResource("").getPath() + "fabric/tmp/buyOrder.xls");
            if(file.exists())file.delete();

            //新建一个输出文件流
            FileOutputStream fout = new FileOutputStream(file);
            //写相应的Excel工作薄
            workbook.write(fout);
            FileInputStream in= new FileInputStream(file);
            fout.close();
            return in;
    }catch(Exception e){
        e.printStackTrace();
    }        return null;
}

设定表格的首列行:

/**
 * 用于列名的设置
*/
private List<String> obtainTitleList(){//自己定义好,你需要的eml表格中的列
    List<String> titleList = new ArrayList<String>();
    titleList.add("ID");
    titleList.add("商品类型名称");
    titleList.add("属性名称");
    titleList.add("输入类型");
    titleList.add("属性值");
    titleList.add("排列次序");
    return titleList;
}

这样就ok了!!

时间: 2024-10-13 15:09:34

导出数据到EXL表格中的相关文章

C#中导出数据到Excel表格中

之前PM交给我一个自动化测试的Case,让我抓取页面上的数据到Excel表格中,刚好又接了一个之前人家做的系统, 刚好看到可以用NPOI导数据,就动手试试,成功导出. 由于鄙人比较菜,也比较懒, 怕自己忘记了,今天就总结一下,以防下次用可以参考. 1.要使用NPOI,首先需要在Project中Install NPOI的 Package. 右键点击Project------>Manage NuGet Packages---->Search NPOI----->点击搜索到的NPOI然后点击等

spring boot 使用POI导出数据到Excel表格

摘自:https://www.cnblogs.com/hopeofthevillage/p/12099807.html spring boot 使用POI导出数据到Excel表格 2019-12-26 00:17  全me村的希望  阅读(42)  评论(0)  编辑收藏 在spring boot 的项目经常碰到将数据导出到Excel表格的需求,而POI技术则对于java操作Excel表格提供了API,POI中对于多种类型的文档都提供了操作的接口,但是其对于Excel表格的操作无疑是最强大的.

导出数据到Excel表格

开发工具与关键技术:Visual Studio 和 ASP.NET.MVC,作者:陈鸿鹏撰写时间:2019年5月25日123下面是我们来学习的导出数据到Excel表格的总结首先在视图层写导出数据的点击事件function 自定义点击事件名(){//然后这里获取当前表格数据的筛选条件var 自定义下拉框名 = $("#下拉框id “).val();//后面根据你的条件数依次写……var 自定义文本框名 = $(”#文本框id ").val(); //然后这里写判断它是否为空 if (自定

Python脚本:实现数据库导出数据到excel表格,支持mysql,postergrsql,MongoDB

import xlwt #返回需要导出的对象的集合,根据业务字型实现 def getObjList(): return [] # 制定 表格行 和数据库字段的对应 obj_feild = { 0: 'name', # 表格第一行是名字 1: 'age', # 表格第二行是年龄 2: 'sno', # 表格第三行是学号 3: 'sex', # 表格第四行是性别 } # 制定数据库字段和中文的对应 field_chinese = { 'name':'名字', # 数据库字段 name对应excel表

jQuery Ajax遍历表格,填充数据,将表格中的数据一条一条拼成Jason数组

$.ajax({ url: baseURL + "InvoiceSale/OnQuotaInvoiceSale", //点击核销单号时,点击核销时,交互的页面               type: "POST",                 data: JSON.stringify(createTable.resultData()),     //JSON传递整个表格数据,得到字符串数组               dataType: "json&q

JS实现动态生成表格并提交表格数据向后端 表格中数据转为json

原文地址 需求:在web页面上动态的生成表格,并可以对表格中的数据进行编辑,然后把表格中的数据提交至后端服务器保存. 首先动态生成表格. 1.首先我们需要导入JS库文件.jQuery 2.然后在页面div中事先创建一个空白表格,可以根据需求而定,我这里是一个带表头的表格 <table border="0" style="text-align: center;" width="100%" id="myTable">

数据泵在本地导出数据到远程数据库中

local_db 安装在suselocal_db的tnsname       (DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.31.110)(PORT = 1521))            (CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = ora11g)))1.建dblink连接到remote_dbCREATE DATABASE LINK WIN7_API_LINK CONNE

C# 导出数据到Excel模板中(转)

今天做报表的时候遇到了多表头的问题,而且相应的报表的格式都一样.所以就采用了报表模板的方式来进行. 第一步:在开发的当前项目中引入:Microsoft.Office.Interop.Excel:System.Reflection:命名空间. 第二步:获取要导出的数据: 第三步:创建一个Excel 应用程序: //需要添加 Microsoft.Office.Interop.Excel引用 Microsoft.Office.Interop.Excel.Application app = new Mi

前端导出数据到excl表格

首先,导出的数据来源可能有两种: 1. 页面的HTML     table表格 2. json纯数据 第一种 页面的HTML内容导出 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <meta charset