我在JSP页面里显示查询数据库的结果,现在我想做个打印按钮,一按打印就能直接把查询到的数据导入到EXCEL中,就可以随心所欲的打印了?大家帮忙,拜托了,最好有例子详细一点的
解决方案 »
- jsp分页中点击下一页的时候,上一页复选框中的内容就消失了,怎么样能保存复选框中的值,并将其传入到servlet中?具体代码?
- 乱码问题
- 请问高手有什么标签可以加载请求,jsp:include可以加载action.do?method=xx吗?有酬谢
- jsp:useBean 问题求救
- No appropriate node to show Web view for "*****",but the web server has been started
- 请教一个问题,在java编程中,什么时候能够用到存储过程? 参与有分
- 在jsp开发中,在对话中把对话的内容传到数据库如何同时通过邮件发给邮件接人
- cas http协议的问题
- 一个关于代理服务器缓存的问题
- 我有三个问题关于JSP和数据库的问题:
- jsp按行删除的问题!!!
- jsp连接sql server出错,万分感激指教
//导出EXCEL表
function genExcel(iColumnNO,i){
try{
if(i!=0)
var str = document.all.layer[i].innerHTML;
else
var str = document.all.layer.innerHTML;
var w = window.open('','_blank','width=1, height=1');
w.document.write(str);
w.document.execCommand('SelectAll');
w.document.execCommand('Copy');
w.close();
var oXL = new ActiveXObject('Excel.Application');
oXL.Visible = true;
var oWB = oXL.Workbooks.Add();
var oSheet = oWB.ActiveSheet;
oSheet.Paste(); var oSelection = oXL.selection;
oSelection.Font.Size = 9; if(iColumnNO > 0 && iColumnNO <= 26){
var strA = "A";
var sColumnNO = String.fromCharCode(iColumnNO+strA.charCodeAt());
oSheet.Columns(sColumnNO + ':' + sColumnNO).WrapText = 0;
oSheet.Columns(sColumnNO + ':' + sColumnNO).NumberFormatLocal = '@';
oSheet.Columns(sColumnNO + ':' + sColumnNO).EntireColumn.AutoFit();
}
/* if(iColumnNO1 > 0 && iColumnNO1 <= 26){
var strA = "A";
var sColumnNO = String.fromCharCode(iColumnNO1+strA.charCodeAt());
oSheet.Columns(sColumnNO + ':' + sColumnNO).WrapText = 0;
oSheet.Columns(sColumnNO + ':' + sColumnNO).NumberFormatLocal = '@';
oSheet.Columns(sColumnNO + ':' + sColumnNO).EntireColumn.AutoFit();
}
*/
}catch (err){
alert("创建对象错误:"+err+"\n请你降低IE安全等级,重新单击\"导到EXCEL文件\"并允许运行ActiveX!");
}
}
页面
<link rel="stylesheet" href="../print.css" media="print">
<div id="layer" class=main_tab>
...........
<div class="printbt" align="center"> //导出时屏蔽
<input type="button" name="exp" value="导到EXCEL文件" onClick="genExcel(1,0)">
</div>
</div>
CSS
table { font-family: "宋体"; font-size: 14px}
input{border-style:none;background-color: #FFFFFF}
.printbt {font-family: "宋体"; font-size: 12px ;display:none}
A:link {text-decoration:none}
A:visited {text-decoration:none}
A:active {text-decoration:none}
将查询的数据集传入
void createReport(ResultSet rs)
{
try
{
ResultSetMetaData rsmd = rs.getMetaData();
//获得数据集的列数
int numbercols=rsmd.getColumnCount();
rs.last();
//将数据集游标置为最后一行,获得数据集的行数
int numberrows=rs.getRow();
//生成一个HSSFWorkbook对象,进行操作
HSSFWorkbook wb=new HSSFWorkbook();
//设置显示的字体以及相关的样式
HSSFFont font = wb.createFont();
font.setFontHeightInPoints((short)8);
font.setFontName("Courier New");
font.setItalic(false);
font.setStrikeout(false);
//设置标题栏单元格的样式
HSSFCellStyle cellHeadStyle=wb.createCellStyle();
cellHeadStyle.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
cellHeadStyle.setBorderBottom(HSSFCellStyle.BORDER_DOUBLE);
cellHeadStyle.setBorderLeft((short)1);
cellHeadStyle.setBorderRight((short)1);
cellHeadStyle.setBorderTop(HSSFCellStyle.BORDER_DOUBLE);
cellHeadStyle.setFillForegroundColor(HSSFColor.LIGHT_ORANGE.index);
cellHeadStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
//设置数据行的字体以及以及相关的对齐方式
HSSFCellStyle cellDataStyle=wb.createCellStyle();
cellDataStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT);
cellDataStyle.setFont(font);
//新建一个HSSFSheet对象
HSSFSheet sheet=wb.createSheet("new sheet");
//处理标题行,建立单元格,得到相关表字段名称写入到相关的单元格
HSSFRow row=sheet.createRow((short)0);
for(int i=1;i<=numbercols;i++)
{
HSSFCell cellHead = row.createCell((short)(i-1));
cellHead.setCellStyle(cellHeadStyle);
cellHead.setCellValue(rsmd.getColumnLabel(i));
}
//重新定位数据行
rs.beforeFirst();
int j=1;
//将每一行的数据写入到相应的单元格
while(rs.next() && j<=numberrows)
{
HSSFRow row1=sheet.createRow((short)j);
for(int k=1;k<=numbercols;k++)
{
HSSFCell cellData = row1.createCell((short)(k-1));
cellData.setCellStyle(cellDataStyle);
//设置编码类型,用于支持中文的输出
cellData.setEncoding(HSSFCell.ENCODING_UTF_16);
/*判断原来数据的格式,然后以相同的数据格式写入单元格,以方便用户
可以进行一定的统计工作,日期类型和字符串类型使用String类型进行输出
*/
if(rsmd.getColumnType(k)==java.sql.Types.INTEGER)
cellData.setCellValue(rs.getInt(k));
else if(rsmd.getColumnType(k)==java.sql.Types.VARCHAR)
cellData.setCellValue(rs.getString(k));
else if(rsmd.getColumnType(k)==java.sql.Types.REAL)
cellData.setCellValue(rs.getDouble(k));
else
cellData.setCellValue(rs.getString(k));
}
j++; }
//利用输出流将数据集写入到硬盘的文件中,操作结束后,关闭输出流
FileOutputStream fileOut = new FileOutputStream("c:\\reportExport.xls");
wb.write(fileOut);
fileOut.close();
}catch(Exception e ){}}