我做的一个查询系统,要实现将查询结果导出为pdf报表。下面是我定义了的方法public InputStream generateExcel(List list) {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
HSSFRow row = sheet.createRow((short) 0);
HSSFCell cell = row.createCell((short) 0);
cell.setCellValue(new HSSFRichTextString("序号"));
cell = row.createCell((short) 1);
cell.setCellValue(new HSSFRichTextString("题名"));
cell = row.createCell((short) 2);
cell.setCellValue(new HSSFRichTextString("作者"));
cell = row.createCell((short) 3);
cell.setCellValue(new HSSFRichTextString("录入时间"));
for (int i = 0; i < list.size(); ++i) {
content = (Content) list.get(i);
row = sheet.createRow(i + 1);
cell = row.createCell((short) 0);
cell.setCellValue(new HSSFRichTextString(content.getId()));
cell = row.createCell((short) 1);
cell.setCellValue(new HSSFRichTextString(content.getTitle()));
cell = row.createCell((short) 2);
cell.setCellValue(new HSSFRichTextString(content.getAuthor()));
cell = row.createCell((short) 3);
cell.setCellValue(content.getDate());
}
File file = new File("result.xls");
try {
OutputStream os = new FileOutputStream(file);
wb.write(os);
os.close();
} catch (Exception e) {
e.printStackTrace();
} InputStream is = null;
try {
is = new FileInputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
} return is;
里面的content是 实体类的对象。调用其它方法以list的形式返回查询结果。上面的方法中可以得到查询结果,但就是无法生成Excel报表,不知道是不是文件输出有错误。
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
HSSFRow row = sheet.createRow((short) 0);
HSSFCell cell = row.createCell((short) 0);
cell.setCellValue(new HSSFRichTextString("序号"));
cell = row.createCell((short) 1);
cell.setCellValue(new HSSFRichTextString("题名"));
cell = row.createCell((short) 2);
cell.setCellValue(new HSSFRichTextString("作者"));
cell = row.createCell((short) 3);
cell.setCellValue(new HSSFRichTextString("录入时间"));
for (int i = 0; i < list.size(); ++i) {
content = (Content) list.get(i);
row = sheet.createRow(i + 1);
cell = row.createCell((short) 0);
cell.setCellValue(new HSSFRichTextString(content.getId()));
cell = row.createCell((short) 1);
cell.setCellValue(new HSSFRichTextString(content.getTitle()));
cell = row.createCell((short) 2);
cell.setCellValue(new HSSFRichTextString(content.getAuthor()));
cell = row.createCell((short) 3);
cell.setCellValue(content.getDate());
}
File file = new File("result.xls");
try {
OutputStream os = new FileOutputStream(file);
wb.write(os);
os.close();
} catch (Exception e) {
e.printStackTrace();
} InputStream is = null;
try {
is = new FileInputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
} return is;
里面的content是 实体类的对象。调用其它方法以list的形式返回查询结果。上面的方法中可以得到查询结果,但就是无法生成Excel报表,不知道是不是文件输出有错误。
解决方案 »
- 使用SSH这类框架就真的很好么??
- 怎么从不同服务器取数据?
- java.sql.SQLException: Io exception: Broken pipe 问题,请帮忙看看
- 只用dom java 怎么格式化xml字符串
- 请问:hibernate开发是把所有表之间的关系建立起来好还是一个关系都不建好?谢谢!
- webmethod 参数传递为空
- TEST
- 开发jsp,servlet在线写代码并运行其代码,遇到的一个棘手的问题
- 请高手们给 菜鸟 推荐几个J2EE学习网站, 多谢!
- 在java程序中如何取得mysql的输出?
- 帮我看一下,这段代码有错误吗
- 设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算
import java.io.File;
import java.util.*;
import jxl.*;
import jxl.write.*; public class myExcel{
Workbook workbook;
Sheet sheet;
/**
*<br>方法说明:写入文件操作
*<br>输入参数:
*<br>返回类型:
*/
public void write(){
try{
//创建一个可写入的excel文件对象
WritableWorkbook workbook = Workbook.createWorkbook(new File("myfile.xls"));
//使用第一张工作表,将其命名为“午餐记录”
WritableSheet sheet = workbook.createSheet("午餐记录", 0);
//表头
Label label0 = new Label(0, 0, "时间");
sheet.addCell(label0);
Label label1 = new Label(1, 0, "姓名");
sheet.addCell(label1);
Label label2 = new Label(2, 0, "午餐标准");
sheet.addCell(label2);
Label label3 = new Label(3, 0, "实际费用");
sheet.addCell(label3);
//格式化日期
jxl.write.DateFormat df = new jxl.write.DateFormat("yyyy-dd-MM hh:mm:ss");
jxl.write.WritableCellFormat wcfDF = new jxl.write.WritableCellFormat(df);
jxl.write.DateTime labelDTF = new jxl.write.DateTime(0, 1, new java.util.Date(), wcfDF);
sheet.addCell(labelDTF);
//普通字符
Label labelCFC = new Label(1, 1, "riverwind");
sheet.addCell(labelCFC);
//格式化数字
jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");
WritableCellFormat wcfN = new WritableCellFormat(nf);
jxl.write.Number labelNF = new jxl.write.Number(2, 1, 13.1415926, wcfN);
sheet.addCell(labelNF);
jxl.write.Number labelNNF = new jxl.write.Number(3, 1, 10.50001, wcfN);
sheet.addCell(labelNNF);
//关闭对象,释放资源
workbook.write();
workbook.close(); }catch(Exception e){
System.out.println(e);
}
}
/**
*<br>方法说明:读取excel文件一行数据
*<br>输入参数:int row指定的行数
*<br>返回类型:String〔〕结果数组
*/
public String[] readLine(int row){
try{
//获取数据表列数
int colnum = sheet.getColumns();
String[] rest = new String[colnum];
for(int i = 0; i < colnum; i++){
String sTemp = read(i,row);
if(sTemp!=null)
rest[i] = sTemp;
}
return rest;
}catch(Exception e){
System.out.println("readLine err:"+e);
workbook.close();
return null;
}
}
/**
*<br>方法说明:读取excel的指定单元数据
*<br>输入参数:
*<br>返回类型:
*/
public String read(int col, int row){
try{
//获得单元数据
Cell a2 = sheet.getCell(col,row);
String rest = a2.getContents();
return rest;
}catch(Exception e){
System.out.println("read err:"+e);
workbook.close();
return null;
}
}
/**
*<br>方法说明:主方法,演示程序用
*<br>输入参数:
*<br>返回类型:
*/
public static void main(String[] arges){
try{
myExcel me = new myExcel();
//生成一个可读取的excel文件对象
me.workbook = Workbook.getWorkbook(new File("myfile.xls"));
//使用第一个工作表
me.sheet = me.workbook.getSheet(0);
//读一行记录,并显示出来
String[] ssTemp = me.readLine(1);
for(int i=0;i<ssTemp.length;i++)
System.out.println(ssTemp[i]);
//写入数据
me.write();
me.workbook.close();
}catch(Exception e){
System.out.println(e);
}
}
}
import java.util.*;
import jxl.*;
import jxl.write.*;
public class myExcel{
Workbook workbook;
Sheet sheet;
/**
*<br>方法说明:写入文件操作
*<br>输入参数:
*<br>返回类型:
*/
public void write(){
try{
//创建一个可写入的excel文件对象
WritableWorkbook workbook = Workbook.createWorkbook(new File("myfile.xls"));
//使用第一张工作表,将其命名为“午餐记录”
WritableSheet sheet = workbook.createSheet("午餐记录", 0);
//表头
Label label0 = new Label(0, 0, "时间");
sheet.addCell(label0);
Label label1 = new Label(1, 0, "姓名");
sheet.addCell(label1);
Label label2 = new Label(2, 0, "午餐标准");
sheet.addCell(label2);
Label label3 = new Label(3, 0, "实际费用");
sheet.addCell(label3);
//格式化日期
jxl.write.DateFormat df = new jxl.write.DateFormat("yyyy-dd-MM hh:mm:ss");
jxl.write.WritableCellFormat wcfDF = new jxl.write.WritableCellFormat(df);
jxl.write.DateTime labelDTF = new jxl.write.DateTime(0, 1, new java.util.Date(), wcfDF);
sheet.addCell(labelDTF);
//普通字符
Label labelCFC = new Label(1, 1, "riverwind");
sheet.addCell(labelCFC);
//格式化数字
jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");
WritableCellFormat wcfN = new WritableCellFormat(nf);
jxl.write.Number labelNF = new jxl.write.Number(2, 1, 13.1415926, wcfN);
sheet.addCell(labelNF);
jxl.write.Number labelNNF = new jxl.write.Number(3, 1, 10.50001, wcfN);
sheet.addCell(labelNNF);
//关闭对象,释放资源
workbook.write();
workbook.close(); }catch(Exception e){
System.out.println(e);
}
}
/**
*<br>方法说明:读取excel文件一行数据
*<br>输入参数:int row指定的行数
*<br>返回类型:String〔〕结果数组
*/
public String[] readLine(int row){
try{
//获取数据表列数
int colnum = sheet.getColumns();
String[] rest = new String[colnum];
for(int i = 0; i < colnum; i++){
String sTemp = read(i,row);
if(sTemp!=null)
rest[i] = sTemp;
}
return rest;
}catch(Exception e){
System.out.println("readLine err:"+e);
workbook.close();
return null;
}
}
/**
*<br>方法说明:读取excel的指定单元数据
*<br>输入参数:
*<br>返回类型:
*/
public String read(int col, int row){
try{
//获得单元数据
Cell a2 = sheet.getCell(col,row);
String rest = a2.getContents();
return rest;
}catch(Exception e){
System.out.println("read err:"+e);
workbook.close();
return null;
}
}
/**
*<br>方法说明:主方法,演示程序用
*<br>输入参数:
*<br>返回类型:
*/
public static void main(String[] arges){
try{
myExcel me = new myExcel();
//生成一个可读取的excel文件对象
me.workbook = Workbook.getWorkbook(new File("myfile.xls"));
//使用第一个工作表
me.sheet = me.workbook.getSheet(0);
//读一行记录,并显示出来
String[] ssTemp = me.readLine(1);
for(int i=0;i<ssTemp.length;i++)
System.out.println(ssTemp[i]);
//写入数据
me.write();
me.workbook.close();
}catch(Exception e){
System.out.println(e);
}
}
}
package test;// 生成Excel的类
import java.io.File;import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;public class CreateExcel {
public static void main(String args[]) {
try {
// 打开文件
WritableWorkbook book = Workbook.createWorkbook(new File("aa.xls"));
// 生成名为“第一页”的工作表,参数0表示这是第一页
WritableSheet sheet = book.createSheet("第一页",0);
// 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
// 以及单元格内容为test
//Label label = new Label(0,0,"testssss");
for(int i=0;i<10;i++){
for (int j=0;j<10;j++){
Label label = new Label(i,j,i*j+"");
sheet.addCell(label);
}
}
// 将定义好的单元格添加到工作表中
// 生成一个保存数字的单元格 必须使用Number的完整包路径,否则有语法歧义 单元格位置是第二列,第一行,值为789.123
jxl.write.Number number = new jxl.write.Number(1, 0, 555.12541);
sheet.addCell(number);
// 写入数据并关闭文件
book.write();
book.close(); } catch (Exception e) {
System.out.println(e);
}
}
}package test;// 读取Excel的类
import java.io.File;import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;public class ReadExcel {
public static void main(String args[]) {
try {
Workbook book = Workbook.getWorkbook(new File("test.xls "));
//获得第一个工作表对象
Sheet sheet = book.getSheet(0);
//得到第一列第一行的单元格
int rows = sheet.getRows();
int column = sheet.getColumns();
for (int i=0;i<rows;i++){
for (int j=0;j<column;j++){
Cell cell1 = sheet.getCell(j, i);
String result = cell1.getContents();
System.out.print(result+",");
}
System.out.println("-----------------------------");
}
book.close();
} catch (Exception e) {
System.out.println(e);
}
}
}package test;import java.io.File;import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;public class UpdateExcel {
public static void main(String args[]) {
try {
//Excel获得文件
Workbook wb = Workbook.getWorkbook(new File("test.xls"));
//打开一个文件的副本,并且指定数据写回到原文件
WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"), wb);
//添加一个工作表
WritableSheet sheet = book.createSheet("第二页 ", 1);
sheet.addCell(new Label(0, 0, "第二页的测试数据 "));
book.write();
book.close();
} catch (Exception e) {
System.out.println(e);
}
}
}