必須要選擇個合適的報表工具才能事半功倍,建議考察下銳浪報表。這樣的多層表頭用銳浪報表很容易做,斜線也能實現。
創新互聯建站專業為企業提供江干網站建設、江干做網站、江干網站設計、江干網站制作等企業網站建設、網頁設計與制作、江干企業網站模板建站服務,10年江干做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
%@ 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) + "\"");
//循環取出流中的數據
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"; //產生的Excel文件的名稱
public static void main(String args[])
{
try
{
HSSFWorkbook workbook = new HSSFWorkbook(); //產生工作簿對象
HSSFSheet sheet = workbook.createSheet(); //產生工作表對象
//設置第一個工作表的名稱為firstSheet
//為了工作表能支持中文,設置字符編碼為UTF_16
workbook.setSheetName(0,"firstSheet",HSSFWorkbook.ENCODING_UTF_16);
//產生一行
HSSFRow row = sheet.createRow((short)0);
//產生第一個單元格
HSSFCell cell = row.createCell((short) 0);
//設置單元格內容為字符串型
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文件內容
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);
}
}
}
與數據庫結合使用
使用POI,結合JDBC編程技術,我們就可以方便地將數據庫中的數據導出生成Excel報表。其關鍵代碼如下:
/*把數據集rs中的數據導出至Excel工作表中。
*傳入參數:數據集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,"導出數據成功!");
}
JAVA POI 組件//創建HSSFWorkbook對象
HSSFWorkbook wb = new HSSFWorkbook();
//創建HSSFSheet對象
HSSFSheet sheet = wb.createSheet("sheet0");
//創建HSSFRow對象
HSSFRow row = sheet.createRow((short)0);
//創建HSSFCell對象
HSSFCell cell=row.createCell((short)0);
//用來處理中文問題
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
//設置單元格的值
cell.setCellValue("單元格中的中文");
//定義你需要的輸出流
OutputStream out = new FileOutputStream("viwo.xls");
//輸出Excel
可以用FineReport報表軟件實現。finereport是純java軟件,類excel設計模式,是一款功能極其牛掰的表格工具,可與數據庫直接對接(一般的數據庫,Oracle,SqlServer,MySql,DB2,Sybase,Informix等都支持),文本數據直接導入當然也支持,企業級額應用中包括設置定時報表、自定匯總數據發送郵件、報表權限分配、決策平臺搭建等,因為是專業的報表軟件,功能很強大,其實很多業內人士都在用這款軟件,另外幾乎不用自己編寫代碼,所以新手很容易上手使用。應該會比較適合您的,滿意的話可以采納的哦,謝謝了
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("性別統計表", 1); // sheet名稱
WritableSheet wsheet = wbook.createSheet("證件類型統計表", 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);
// 開始生成主體內容
wsheet.addCell(new Label(0, 2, "具體內容"));
for(int i=0;ilist.size();i++) br=""{
wsheet.addCell(new Label(0, i+3, "");
wsheet.addCell(new Label(1, i+3,"");
}
// 主體內容生成結束
wbook.write(); // 寫入文件
wbook.close();
os.close(); // 關閉流
return true;
}
catch(Exception ex)
{
ex.printStackTrace();
return false;
}
}
當前標題:報表下載JAVA代碼實現,java報表開發框架
文章轉載:http://vcdvsql.cn/article18/hshcdp.html
成都網站建設公司_創新互聯,為您提供手機網站建設、品牌網站設計、軟件開發、定制開發、Google、網站維護
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯