用我現(xiàn)在用的finereport來(lái)和題主說(shuō)下餅圖吧,它也是web報(bào)表工具。
創(chuàng)新互聯(lián)主營(yíng)魏縣網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,手機(jī)APP定制開(kāi)發(fā),魏縣h5小程序定制開(kāi)發(fā)搭建,魏縣網(wǎng)站營(yíng)銷(xiāo)推廣歡迎魏縣等地區(qū)企業(yè)咨詢(xún)
打開(kāi)報(bào)表,設(shè)置百分比數(shù)據(jù)模板
符合餅圖和復(fù)合條餅圖只支持百分比的系列分隔方式,因此我們計(jì)算每個(gè)地區(qū)的應(yīng)付金額所占比例是多少,隱藏B列,在C1中輸入占比,C2中輸入公式:=B2/SUM(B2[!0]),B2[!0]是B2擴(kuò)展出來(lái)的所有單元格,根據(jù)情況設(shè)置單元格樣式等操作。
下面以制作符合餅圖為例,選中圖表,勾線圖表屬性表-樣式系列中的第二繪圖區(qū),將第二繪圖區(qū)小于百分比的數(shù)據(jù)改為10,默認(rèn)為5,表示第二繪圖區(qū)包含所有小于該百分比的值為:如下圖:
根據(jù)情況可設(shè)置系列標(biāo)簽樣式,勾選圖表屬性表-樣式標(biāo)簽中的標(biāo)簽,選中值,設(shè)置格式,百分比保留兩位小數(shù)。
修改圖表數(shù)據(jù)
修改圖表屬性表-數(shù)據(jù)圖例項(xiàng)值為C2單元格,復(fù)合餅圖則可設(shè)置完成。
預(yù)覽與保存
保存模板,點(diǎn)擊分頁(yè)預(yù)覽,即可看到效果。
就是使用poi工具,你自己去下載poi.jar吧。
public class CreateXL
{
public static String xlsFile="test.xls"; //產(chǎn)生的Excel文件的名稱(chēng)
public static void main(String args[])
{
try
{
HSSFWorkbook workbook = new HSSFWorkbook(); //產(chǎn)生工作簿對(duì)象
HSSFSheet sheet = workbook.createSheet(); //產(chǎn)生工作表對(duì)象
//設(shè)置第一個(gè)工作表的名稱(chēng)為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);
//為了能在單元格中寫(xiě)入中文,設(shè)置字符編碼為UTF_16。
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
//往第一個(gè)單元格中寫(xiě)入信息
cell.setCellValue("測(cè)試成功");
FileOutputStream fOut = new FileOutputStream(xlsFile);
workbook.write(fOut);
fOut.flush();
fOut.close();
System.out.println("文件生成...");
//以下語(yǔ)句讀取生成的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ù)庫(kù)結(jié)合使用
使用POI,結(jié)合JDBC編程技術(shù),我們就可以方便地將數(shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)出生成Excel報(bào)表。其關(guān)鍵代碼如下:
/*把數(shù)據(jù)集rs中的數(shù)據(jù)導(dǎo)出至Excel工作表中。
*傳入?yún)?shù):數(shù)據(jù)集rs,Excel文件名稱(chēng)xlsName,工作表名稱(chēng)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();
//寫(xiě)入各個(gè)字段的名稱(chēng)
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;
//寫(xiě)入各條記錄,每條記錄對(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ù)成功!");
}
可以用FineReport報(bào)表軟件實(shí)現(xiàn)。finereport是純java軟件,類(lèi)excel設(shè)計(jì)模式,是一款功能極其牛掰的表格工具,可與數(shù)據(jù)庫(kù)直接對(duì)接(一般的數(shù)據(jù)庫(kù),Oracle,SqlServer,MySql,DB2,Sybase,Informix等都支持),文本數(shù)據(jù)直接導(dǎo)入當(dāng)然也支持,企業(yè)級(jí)額應(yīng)用中包括設(shè)置定時(shí)報(bào)表、自定匯總數(shù)據(jù)發(fā)送郵件、報(bào)表權(quán)限分配、決策平臺(tái)搭建等,因?yàn)槭菍?zhuān)業(yè)的報(bào)表軟件,功能很強(qiáng)大,其實(shí)很多業(yè)內(nèi)人士都在用這款軟件,另外幾乎不用自己編寫(xiě)代碼,所以新手很容易上手使用。應(yīng)該會(huì)比較適合您的,滿(mǎn)意的話(huà)可以采納的哦,謝謝了