把數(shù)據(jù)庫中需要的數(shù)據(jù)處理后做成可視化圖表,根據(jù)不同需求可以做成不同形式的圖表,節(jié)省時(shí)間,效果比較好,報(bào)表軟件國外的話水晶報(bào)表,SAP公司的商業(yè)報(bào)表工具,作為SAP“集團(tuán)”下的報(bào)表組件模塊。10年事前盛行一時(shí),后被SAP收購。但水晶報(bào)表(Crystal Report)在理論上只支持單數(shù)據(jù)集,對(duì)多集的支持依賴于數(shù)據(jù)庫的運(yùn)算能力(叉乘與聯(lián)合等或?qū)懘鎯?chǔ)過程),多庫一般難以支持。
成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供達(dá)川企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為達(dá)川眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
國內(nèi)的話FineReport,目前國內(nèi)報(bào)表軟件領(lǐng)域發(fā)展最成熟也是市場(chǎng)份額最高的。IDC的報(bào)告里,17年甚至超過SAP,IBM,在這個(gè)細(xì)分領(lǐng)域,也是Gartner的BI選型市場(chǎng)指南里唯一推薦的報(bào)表工具。零代碼開發(fā),類似excel的設(shè)計(jì)方式,上手簡(jiǎn)單。尤其數(shù)據(jù)字典、實(shí)際值和顯示值等的設(shè)計(jì)更是切入快速開發(fā)的要害,這些放在別的語言和體系下往往要大量代碼才能實(shí)現(xiàn)且頻繁需要的功能放在FineReport里卻只是幾個(gè)操作的事情。移動(dòng)端報(bào)表+可視化大屏。
就是使用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)生工作簿對(duì)象
HSSFSheet sheet = workbook.createSheet(); //產(chǎn)生工作表對(duì)象
//設(shè)置第一個(gè)工作表的名稱為firstSheet
//為了工作表能支持中文,設(shè)置字符編碼為UTF_16
workbook.setSheetName(0,"firstSheet",HSSFWorkbook.ENCODING_UTF_16);
//產(chǎn)生一行
HSSFRow row = sheet.createRow((short)0);
//產(chǎn)生第一個(gè)單元格
HSSFCell cell = row.createCell((short) 0);
//設(shè)置單元格內(nèi)容為字符串型
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
//為了能在單元格中寫入中文,設(shè)置字符編碼為UTF_16。
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
//往第一個(gè)單元格中寫入信息
cell.setCellValue("測(cè)試成功");
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("第一個(gè)單元是:" + readCell.getStringCellValue());
}
catch(Exception e)
{
System.out.println(e);
}
}
}
與數(shù)據(jù)庫結(jié)合使用
使用POI,結(jié)合JDBC編程技術(shù),我們就可以方便地將數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)出生成Excel報(bào)表。其關(guān)鍵代碼如下:
/*把數(shù)據(jù)集rs中的數(shù)據(jù)導(dǎo)出至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();
//寫入各個(gè)字段的名稱
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;
//寫入各條記錄,每條記錄對(duì)應(yīng)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,"導(dǎo)出數(shù)據(jù)成功!");
}
JAVA POI 組件//創(chuàng)建HSSFWorkbook對(duì)象
HSSFWorkbook wb = new HSSFWorkbook();
//創(chuàng)建HSSFSheet對(duì)象
HSSFSheet sheet = wb.createSheet("sheet0");
//創(chuàng)建HSSFRow對(duì)象
HSSFRow row = sheet.createRow((short)0);
//創(chuàng)建HSSFCell對(duì)象
HSSFCell cell=row.createCell((short)0);
//用來處理中文問題
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
//設(shè)置單元格的值
cell.setCellValue("單元格中的中文");
//定義你需要的輸出流
OutputStream out = new FileOutputStream("viwo.xls");
//輸出Excel