action处理excel表格

1、在action处理类中获取servlet请求相应

  proteted HttpServletResponse getHttpServletResponse(){

  ActionContext= Action.getContext();
  return (HttpServletResponse)ac.get(ServletActionContext.HTTP_RESPONSE);
  }
  HttpServletResponse response=supper.getHttpServletResponse();
  //设置响应头与内容
  String fileName="机构授信表";
  //设置响应相关的设置
  response.setCharacterEncoding("UTF-8");//设置字符编码
  response.setContentType("application/vnd.ms-excel");//设置生成的是EXCEL文件
  //当用户想把请求所得内容存为一个文件的时候,提供一个默认文件名;浏览器会提示保存还是打开,不会有浏览器直接打开
  response.setHeader("Content-disposition","attachment;filename="+new String(fileName.getBytes("gb2321"),"ISO8859-1")+""+".xlsx");
  获取文件输出流
  OutputStream out=response.getOutputStream();
  service.export(out);

2、service中输出文件方法
  private BaseDao baseDao;
  Alt+shift+s; 自动生成get和set方法
  public void export(OutputStream os)throws ServiceException(){
  Session sessin=baseDao.getSessioFactory().getCurrentSession();

  //创建一个Excel文件

  XSSFWorkbook wb=new XSSFWorkbook();

  //创建一个工作薄
  final XSSFSheet workSheet= wb.createSheet("sheet");

  //创建文件的行
  final XSSFWorkSheet head=workSheet.createRow(0);

  //从Hibernate中获取JDBC连接work是一个接口
  session.doWork(new Work){

  public void execute(Connection conn)throws SQLExecption(){

  PreparedStatement st=conn.prepareStatement("sql语句"--select org_id,org_Nm_Cn from org_Info order By org_id);

  ResultSet re=st.executeQuery();

  int i=1;

  while(re.next()){

  final XSSFCell cell=head.createCell(i++);

  cell.serCellValue(re.getString("orgNmCn");
  st.close();
  re.close();
  }
  }
  });
  session.doWork(new Work){
  public void execute(Connection conn) throws SQLExecption(){

  PreparedStatement st=conn.prepareStatement("sql语句-- select org_id, org_nm_cn, crdt_org_id, crdt_org_nm_cn, INTL_CRDT_AMNT, CRDT_RL_F, min_crdt_amnt from v_crdt");

  ResultSet re=st.executeQuery();

  int row=1,column=0;
  String orgNm_cn=null;
  XSSFRow currentRow=null;
  while(re.next()){

  if( !StringUtils.equals(orgNm_cn,re.getString("orgNmCn"))){

  orgNm_cn=re.getString("orgNmCn");
  currentRow=worksheet.createRow(row++);
  currentRow.createCell(0).setValue(orgNm_cn);
  column=1;
}

  String value;
  String ament=re.getString("INTL_CRDT_AMNT");
  if(null==ament){
  value="--";
  }else if(ament=="-1"){
  value="√";
  }else if(ament=="-2"){
  value="--";
  }else{
  value=ament;

  }

  String minCrdt=re.getString("min_crdt_amnt");
  if( !StringUtils.isEmpty(minCrdt) && "-2".equals(mincrdt)){
  vale=value+"("+minCrdt+")";
  }

  curremtRow.creatCell(column++).setCellValue(value);
  }
  st.close();
  re.close();
}
});

}
在Vue中实现批量导入Excel表格的功能,可以通过使用el-upload组件来实现。在页面中放置一个批量导入的按钮,并使用el-upload组件进行文件上传。以下是一个示例代码: ```html <template> <div> <el-upload class="upload-demo" action="" :on-change="handleChange" :on-remove="handleRemove" :on-exceed="handleExceed" :limit="limitUpload" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel" :auto-upload="false"> <el-button size="small" type="primary">批量导入</el-button> </el-upload> </div> </template> <script> export default { data() { return { // 批量上传 limitUpload: 1, fileTemp: null, file: null, // 存放excel的数组 da: \[\], dalen: 0 } }, methods: { handleChange(file) { // 处理文件上传 this.fileTemp = file.raw }, handleRemove() { // 处理文件移除 this.fileTemp = null }, handleExceed() { // 处理文件超出限制 this.$message.warning('超出文件上传限制') } } } </script> ``` 在上述代码中,el-upload组件用于实现文件上传功能。通过设置action属性为空,可以实现前端文件上传。on-change、on-remove和on-exceed属性分别用于处理文件上传、文件移除和文件超出限制的事件。limit属性用于限制上传文件的数量。accept属性用于指定允许上传的文件类型。auto-upload属性设置为false,表示不自动上传文件。 在data中定义了一些变量,如limitUpload用于限制上传文件的数量,fileTemp用于存储上传的文件,da用于存放Excel数据的数组。 通过以上代码,你可以在Vue中实现批量导入Excel表格的功能。 #### 引用[.reference_title] - *1* *2* [vue中批量导入excel并获取数据](https://blog.csdn.net/qq_29124867/article/details/122229629)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值