必須要選擇個合適的報表工具才能事半功倍,建議考察下銳浪報表。這樣的多層表頭用銳浪報表很容易做,斜線也能實現(xiàn)。

創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供江干網(wǎng)站建設、江干做網(wǎng)站、江干網(wǎng)站設計、江干網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、江干企業(yè)網(wǎng)站模板建站服務,10年江干做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。
%@ page contentType="text/html; charset=gb2312" %
%@ page import="java.io.*"%
%!
public String toUtf8String(String s)
{
StringBuffer sb = new StringBuffer();
for (int i=0;is.length();i++) {
char c = s.charAt(i);
if (c = 0 c = 255) {
sb.append(c);
} else {
byte[] b;
try {
b = Character.toString(c).getBytes("utf-8");
} catch (Exception ex) {
System.out.println(ex);
b = new byte[0];
}
for (int j = 0; j b.length; j++) {
int k = b[j];
if (k 0) k += 256;
sb.append("%" + Integer.toHexString(k).
toUpperCase());
}
}
}
return sb.toString();
}
%
%
String filename=new String(request.getParameter("filename").getBytes("ISO8859-1"),"GBK");
String dirName="D:/我.doc";
java.io.File ff=null;
String dd=dirName+System.getProperties().getProperty("file.separator")+filename;
try{
ff=new java.io.File(dd);
}
catch(Exception e){
System.out.println(e.getMessage());
e.printStackTrace();
}
if (ff!=nullff.exists()ff.isFile())
{
long filelength = ff.length();
InputStream inStream=new FileInputStream(dd);
//設置輸出的格式
response.reset();
response.setContentType("application/x-msdownload");
response.setContentLength((int)filelength);
response.addHeader("Content-Disposition","attachment; filename=\"" + toUtf8String(filename) + "\"");
//循環(huán)取出流中的數(shù)據(jù)
byte[] b = new byte[100];
int len;
while((len=inStream.read(b)) 0)
response.getOutputStream().write(b,0,len);
inStream.close();
out.clear();
out = pageContext.pushBody();
}
%
:a href="d.jsp"aa/a
上面的那個是用流寫的 但是也可以用超鏈接下載
你寫上文件的路徑就可以了
就是使用poi工具,你自己去下載poi.jar吧。
public class CreateXL
{
public static String xlsFile="test.xls"; //產(chǎn)生的Excel文件的名稱
public static void main(String args[])
{
try
{
HSSFWorkbook workbook = new HSSFWorkbook(); //產(chǎn)生工作簿對象
HSSFSheet sheet = workbook.createSheet(); //產(chǎn)生工作表對象
//設置第一個工作表的名稱為firstSheet
//為了工作表能支持中文,設置字符編碼為UTF_16
workbook.setSheetName(0,"firstSheet",HSSFWorkbook.ENCODING_UTF_16);
//產(chǎn)生一行
HSSFRow row = sheet.createRow((short)0);
//產(chǎn)生第一個單元格
HSSFCell cell = row.createCell((short) 0);
//設置單元格內(nèi)容為字符串型
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
//為了能在單元格中寫入中文,設置字符編碼為UTF_16。
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
//往第一個單元格中寫入信息
cell.setCellValue("測試成功");
FileOutputStream fOut = new FileOutputStream(xlsFile);
workbook.write(fOut);
fOut.flush();
fOut.close();
System.out.println("文件生成...");
//以下語句讀取生成的Excel文件內(nèi)容
FileInputStream fIn=new FileInputStream(xlsFile);
HSSFWorkbook readWorkBook= new HSSFWorkbook(fIn);
HSSFSheet readSheet= readWorkBook.getSheet("firstSheet");
HSSFRow readRow =readSheet.getRow(0);
HSSFCell readCell = readRow.getCell((short)0);
System.out.println("第一個單元是:" + readCell.getStringCellValue());
}
catch(Exception e)
{
System.out.println(e);
}
}
}
與數(shù)據(jù)庫結(jié)合使用
使用POI,結(jié)合JDBC編程技術,我們就可以方便地將數(shù)據(jù)庫中的數(shù)據(jù)導出生成Excel報表。其關鍵代碼如下:
/*把數(shù)據(jù)集rs中的數(shù)據(jù)導出至Excel工作表中。
*傳入?yún)?shù):數(shù)據(jù)集rs,Excel文件名稱xlsName,工作表名稱sheetName。
*/
public static void resultSetToExcel(ResultSet rs,String xlsName,String sheetName) throws Exception
{
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
workbook.setSheetName(0,sheetName,HSSFWorkbook.ENCODING_UTF_16);
HSSFRow row= sheet.createRow((short)0);;
HSSFCell cell;
ResultSetMetaData md=rs.getMetaData();
int nColumn=md.getColumnCount();
//寫入各個字段的名稱
for(int i=1;i=nColumn;i++)
{
cell = row.createCell((short)(i-1));
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(md.getColumnLabel(i));
}
int iRow=1;
//寫入各條記錄,每條記錄對應Excel中的一行
while(rs.next())
{row= sheet.createRow((short)iRow);;
for(int j=1;j=nColumn;j++)
{
cell = row.createCell((short)(j-1));
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(rs.getObject(j).toString());
}
iRow++;
}
FileOutputStream fOut = new FileOutputStream(xlsName);
workbook.write(fOut);
fOut.flush();
fOut.close();
JOptionPane.showMessageDialog(null,"導出數(shù)據(jù)成功!");
}
JAVA POI 組件//創(chuàng)建HSSFWorkbook對象
HSSFWorkbook wb = new HSSFWorkbook();
//創(chuàng)建HSSFSheet對象
HSSFSheet sheet = wb.createSheet("sheet0");
//創(chuàng)建HSSFRow對象
HSSFRow row = sheet.createRow((short)0);
//創(chuàng)建HSSFCell對象
HSSFCell cell=row.createCell((short)0);
//用來處理中文問題
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
//設置單元格的值
cell.setCellValue("單元格中的中文");
//定義你需要的輸出流
OutputStream out = new FileOutputStream("viwo.xls");
//輸出Excel
可以用FineReport報表軟件實現(xiàn)。finereport是純java軟件,類excel設計模式,是一款功能極其牛掰的表格工具,可與數(shù)據(jù)庫直接對接(一般的數(shù)據(jù)庫,Oracle,SqlServer,MySql,DB2,Sybase,Informix等都支持),文本數(shù)據(jù)直接導入當然也支持,企業(yè)級額應用中包括設置定時報表、自定匯總數(shù)據(jù)發(fā)送郵件、報表權限分配、決策平臺搭建等,因為是專業(yè)的報表軟件,功能很強大,其實很多業(yè)內(nèi)人士都在用這款軟件,另外幾乎不用自己編寫代碼,所以新手很容易上手使用。應該會比較適合您的,滿意的話可以采納的哦,謝謝了
java本身沒有操作excel的工具,需要第三方的jar包,用jxl就可以,代碼入下。
jxl你上百度搜索后下載就可以,簡單易用,不懂追問。
public boolean exportExcel(HttpServletResponse response,Listcityinfo list)
{
try
{
OutputStream os = response.getOutputStream();// 取得輸出流
response.reset();// 清空輸出流
response.setHeader("Content-disposition", "attachment; filename=fine.xls");// 設定輸出文件頭
response.setContentType("application/msexcel");// 定義輸出類型
WritableWorkbook wbook = Workbook.createWorkbook(os); // 建立excel文件
String tmptitle = "標題"; // 標題
WritableSheet wsheet = wbook.createSheet("詳細信息表", 0); // sheet名稱
WritableSheet wsheet = wbook.createSheet("性別統(tǒng)計表", 1); // sheet名稱
WritableSheet wsheet = wbook.createSheet("證件類型統(tǒng)計表", 2); // sheet名稱
// 設置excel標題
WritableFont wfont = new WritableFont(WritableFont.ARIAL, 16,WritableFont.BOLD,
false,UnderlineStyle.NO_UNDERLINE,Colour.BLACK);
WritableCellFormat wcfFC = new WritableCellFormat(wfont);
wcfFC.setBackground(Colour.AQUA);
wsheet.addCell(new Label(1, 0, tmptitle, wcfFC));
wfont = new jxl.write.WritableFont(WritableFont.ARIAL, 14,WritableFont.BOLD,
false, UnderlineStyle.NO_UNDERLINE,Colour.BLACK);
wcfFC = new WritableCellFormat(wfont);
// 開始生成主體內(nèi)容
wsheet.addCell(new Label(0, 2, "具體內(nèi)容"));
for(int i=0;ilist.size();i++) br=""{
wsheet.addCell(new Label(0, i+3, "");
wsheet.addCell(new Label(1, i+3,"");
}
// 主體內(nèi)容生成結(jié)束
wbook.write(); // 寫入文件
wbook.close();
os.close(); // 關閉流
return true;
}
catch(Exception ex)
{
ex.printStackTrace();
return false;
}
}
當前標題:報表下載JAVA代碼實現(xiàn),java報表開發(fā)框架
文章轉(zhuǎn)載:http://chinadenli.net/article18/hshcdp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設、品牌網(wǎng)站設計、軟件開發(fā)、定制開發(fā)、Google、網(wǎng)站維護
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)