csv,excal报表导出

前端使用vue

  前端代码:

       添加一个按钮:

<button type="button" class="btn btn-white m-l-md" @click.stop="exportXls()">EXCEL导出</button>

      写一段jq:

// 报表导出
             exportXls: function () {
                 if (this.total > 300) {
                     var _this = this;
                     parent.layer.confirm('导出的内容超过300条,确定要导出吗?', {
                         btn: ['是', '否'], //按钮
                         shade: false //不显示遮罩
                     }, function () {
                         parent.layer.msg('正在导出!', { icon: 1 });
                         window.open(CONFIG["REQUEST_BASE_URL"] + "/xxxxxx?access_token=" + CONFIG['TOKEN'] + _this.export_CELLPHONE + _this.export_USER_NAME +
                             _this.export_wxid + _this.export_wbid + _this.export_QQ + _this.export_from + _this.export_user_group + _this.export_invitationcode + _this.export_start + _this.export_end);
                     }, function () {
                         parent.layer.msg('已取消', { icon: 2 });
                     });
                 }
                 else {
                     window.open(CONFIG["REQUEST_BASE_URL"] + "/xxxxxxx?access_token=" + CONFIG['TOKEN'] + this.export_CELLPHONE + this.export_USER_NAME +
                         this.export_wxid + this.export_wbid + this.export_QQ + this.export_from + this.export_user_group + this.export_invitationcode + this.export_start + this.export_end);
                 }
             }
},

后台:

@RequestMapping(value = "/xxxx", method = RequestMethod.GET)
public void exportUserList(TSysUserBankCard tSysUserBankCard,HttpServletResponse response) throws SysException,IOException {
    //设置一页300条数据
    tSysUserBankCard.setPage(1);
    tSysUserBankCard.setRows(300);
    //查询列表
    List<TSysUserBankCard> tSysUserBankCards = userBankCardListService.selectUserBankCardList(tSysUserBankCard);
    //封装需要的表头
    Object[] head = {表头内容};
    List<List<Object>> dataList = new ArrayList<List<Object>>();
    //表头转换为list
    List<Object> headList = Arrays.asList(head);
    List<Object> rowList = null;
    for(TSysUserBankCard s :tSysUserBankCards)
    {
        rowList = new ArrayList<Object>();
        rowList.add(s.getId());
        //添加在rowlist
        dataList.add(rowList);

    }
    String filename = java.util.UUID.randomUUID().toString();
    //调用cvs工具类
    File csvFile = CSVUtils.createCSVFile(headList, dataList, tmppath, filename);
    //文件名称
    String date = "银行卡信息列表" + DateUtils.milliSecondToDateStr(new Date().getTime(), "yyyy-MM-dd");
    response.setHeader("Content-disposition", "attachment; filename=" + new String(date.getBytes(), "iso-8859-1") + ".csv");
    response.setHeader("Content-Length", String.valueOf(csvFile.length()));
    BufferedInputStream bis = null;
    BufferedOutputStream bos = null;
    bis = new BufferedInputStream(new FileInputStream(csvFile));
    bos = new BufferedOutputStream(response.getOutputStream());
    byte[] buff = new byte[2048];
    while (true) {
        int bytesRead;
        if (-1 == (bytesRead = bis.read(buff, 0, buff.length))) break;
        bos.write(buff, 0, bytesRead);
    }
    bis.close();
    bos.close();
}

cvs工具类:

public static File createCSVFile(List<Object> head, List<List<Object>> dataList,
                                 String outPutPath, String filename) {

    File csvFile = null;
    BufferedWriter csvWtriter = null;
    try {
        csvFile = new File(outPutPath + File.separator + filename + ".csv");
        File parent = csvFile.getParentFile();
        if (parent != null && !parent.exists()) {
            parent.mkdirs();
        }
        csvFile.createNewFile();

        // GB2312使正确读取分隔符","
        csvWtriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(
                csvFile), "GB2312"), 1024);
        // 写入文件头部
        writeRow(head, csvWtriter);

        // 写入文件内容
        for (List<Object> row : dataList) {
            writeRow(row, csvWtriter);
        }
        csvWtriter.flush();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            csvWtriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return csvFile;
}

比较敏感的东西被xxx和汉字代替自行修改

在Microsoft Excel中,COM (Component Object Model) 是一种用于程序间交互的技术,尤其是Windows平台上的应用。如果你想要利用Excel的COM接口来导出数据或创建报表,你可以使用VBA(Visual Basic for Applications)或者一些.NET语言(如C#、VB.NET),通过编写脚本控制Excel的工作。 具体步骤通常包括: 1. **引用库**:在VBA中,你需要添加`Microsoft Excel`引用,这将使你可以访问Excel对象模型中的各种功能。 2. **创建工作簿和工作表**:创建一个新的Excel应用程序实例,并选择或创建一个工作表作为数据来源。 3. **填写数据**:填充或读取你想导出的数据到工作表中。 4. **设置格式和样式**:如果需要,对报表进行格式化和美化,比如设置字体、颜色、单元格格式等。 5. **导出CSV或XLSX**:使用工作簿对象的ExportAsFixedFormat方法,指定文件类型(`.csv` 或 `.xlsx`)并设置保存位置。 6. **执行操作**:调用相应的API或者触发操作来保存文件。 以下是一个简单的VBA代码示例(适用于Excel 2016及以上版本): ```vba Sub ExportToCSV() Dim xlApp As Excel.Application Dim wb As Workbook Dim ws As Worksheet Dim csvFile As String ' 创建Excel应用实例 Set xlApp = New Excel.Application xlApp.Visible = False ' 打开或创建工作簿 Set wb = xlApp.Workbooks.Add Set ws = wb.Sheets(1) ' 填充数据... ws.Range("A1:C10").Value = Array(...) ' 导出CSV csvFile = "C:\Temp\Report.csv" wb.SaveAs Filename:=csvFile, FileFormat:=xlCSV, CreateBackup:=False ' 关闭工作簿和释放资源 wb.Close SaveChanges:=True xlApp.Quit Set ws = Nothing Set wb = Nothing Set xlApp = Nothing End Sub ``` 完成上述步骤后,运行该宏,Excel报表就会被导出到指定的CSV文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值