怎样将java内容以表格形式输出?

怎样将java内容以表格形式输出?,第1张

在jsp页面中,如何将数据导出为doc、xls格式的文件

前台

<c:forEach items="${requestScopenewsListresult}" var="list">

  <tr>

      <td width="5%" style="text-align:center;"><span>${listid}</span></td>

      <td width="35%" style="text-align:left; text-indent:2em;">

          <a href="#" title="${listnewsContent}"><span>${listnewsTitle}</span></a>

      </td>

      <td width="15%" style="text-align:center;"><span>${listnewsCol }</span></td>

      <td width="15%" style="text-align:center;"><span>${listnewsAuthor }</span></td>

      <td width="20%" style="text-align:center;"><span>${listnewsDate }</span></td>

      <td width="10%" style="text-align:center;">

          <div style="float:left;width:50px;height:17px;background:url(/images/IcoBtngif)no-repeat;border: 0;background-position: -222px 0px;">

             <a href="NewsActionid=${listid}&action=editnews">

             <img width="50" height="17" style="border:0;" src="/images/Emptygif" /></a>

          </div><input type="checkbox" name="chk" value="${listid}" />

      </td>     

  </tr>

</c:forEach>

预期想实现的效果:当我点击某一个超链接的时候,跳转到一个servlet中,在里面进行相应的处理,处理完成后返回原页面。

提问:1、如何实现上面所说的效果。

      2、点击超链接的时候,那个超链接应该注意些什么。因为在同一在页面中,可能存在多个<c:forEach></c:forEach>

      3、在servlet里面,调用相应的处理方法的时候应该注意什么因为在这个项目中,我是基于MVC模式开发的(dao层与数据库层交互、domain层封装javaBean、service层与dao层、web层交互、web层主要负责接收数据、调用处理方法、跳转)

一、将网页资料以excel报表以线上浏览方式呈现

xls651jsp原始码如下

<%@ page contentType="application/msexcel" %>

<!-- 以上这行设定本网页为excel格式的网页 -->

<%

responsesetHeader("Content-disposition","inline; filename=test1xls");

//以上这行设定传送到前端浏览器时的档名为test1xls

//就是靠这一行,让前端浏览器以为接收到一个excel档

%>

<html>

<head>

<title>Excel档案呈现方式</title>

</head>

<body>

<table border="1" width="100%">

<tr>

<td>姓名</td><td>身份z字号</td><td>生日</td>

</tr>

<tr>

<td>李玟</td><td>N111111111</td><td>1900/11/12</td>

</tr>

<tr>

<td>梁静如</td><td>N222222222</td><td>1923/10/1</td>

</tr>

<tr>

<td>张惠妹</td><td>N333333333</td><td>1934/12/18</td>

</tr>

</table>

</body>

</html>

二、将网页资料以excel报表以下载的方式呈现

这个jsp档和上一个差不多,只有差别在这一行:

线上浏览的方式: responsesetHeader("Content-disposition","inline; filename=test1xls");

下载的方式: responsesetHeader("Content-disposition","attachment; filename=test2xls");

附注: 1以上纯以静态网页的方式呈现excel档,配合资料库,你便能以动态的报表方式做出excel报表了

2完全不用安装任何元件,或只能受限於win平台,一个简单的方式解决你的报表需求

3聪明的你,应该能举一反三,知道如何将网页资料以word的doc格式展现了吧!

(是不是只要把contentType改成"application/msword"以及filename的副档名改成doc就可以了!)

这样生成的 excel 表格 可以用excel 软件打开编辑 ,但是再用 jxl 解析就会出错 注意

//说思路:开始理解错了,以为让三个文件,变成一张整体的表以后求助最好带上源文件

//费老劲了把你这个去转成表格数据,然后又拆分成几个小细节表格恼火啊

//不过也学到知识了,csv文件

//这里有一个问题,就是合并的文件,并不是你想要的顺序,因为你的文件名毫无规律,如果有规律

//合并后,就会是按顺序的比如s1,s2,s3好了上代码:

import javaioFile;

import javaioFileInputStream;

import javaioFileNotFoundException;

import javaioFileWriter;

import javaioFilenameFilter;

import javaioIOException;

import javaioPrintWriter;

import javaioSequenceInputStream;

import javautilArrayList;

import javautilCollections;

import javautilEnumeration;

public class CsvMerge {

private String path;// 路径;

private File dir, files[];// 目录,文件数组;

private SequenceInputStream sis;//序列流

private PrintWriter pw;// 输出流

private boolean flag;// 标记

private byte[] bys;//容器

public static void main(String[] args) {

new CsvMerge()init();//启动合并功能;

}

private void init() {

path = "K:\\IO测试\\合并Csv文件";// 确定路径;

dir = new File(path);// 目录位置

flag = direxists();

if (!flag) {

Systemoutprintln("目录不存在别费劲了");

return;

}

files = dirlistFiles(new FilenameFilter() {//扫描目录,需要被合并的碎片文件

@Override

public boolean accept(File dir, String name) {

return nameendsWith("csv");

}

});

ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();// 创建文件读取流集合;

try {

for (int i = 0; i < fileslength; i++) // 创建分支流

aladd(new FileInputStream(files[i]getAbsoluteFile()));

} catch (FileNotFoundException e) {

eprintStackTrace();

}

Enumeration<FileInputStream> en=Collectionsenumeration(al);//拿到枚举对象;

sis=new SequenceInputStream(en);//初始化合并流;

bys=new byte[1024];

try {

File file=new File(dir,"Mercsv");//目标合并文件;

if(fileexists()) {

Systemoutprintln("文件已经存在");

return;

}

pw=new PrintWriter(new FileWriter(file),true);

for(int a=sisread(bys);a!=-1;a=sisread(bys)) {

pwprintln(new String(bys,0,a));

}

} catch (FileNotFoundException e) {

eprintStackTrace();

}catch(Exception e) {

eprintStackTrace();

}finally {

if(sis!=null) {

try {

sisclose();

} catch (IOException e) {

eprintStackTrace();

}

}

}

}

}

//标记的是合并后的文件,碎片文件,随便你放,如果想按照顺序,就把名字取的有顺序

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/12174475.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存