用java将数据导出到wps表格中,怎么实现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用java将数据导出到wps表格中,怎么实现相关的知识,希望对你有一定的参考价值。
一:页面图片显示预览:
1)如下图:
2)点击导出按钮后预览:
3)最终生成的excel表格图片预览:
二:代码演示:
说明:执行操作时,请先引进导出excel表格的jar文件包。
找到导出按钮所执行的js方法,在java后天查看该方法的实现即可。
1)jsp代码:
[html] view plaincopyprint?
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<html>
<head>
<base href="<%=basePath%>">
<title>驾校合格率排名</title>
<link href="jsp/commonstyle/css/tabStyle.css" rel="stylesheet" type="text/css">
<link rel="STYLESHEET" type="text/css" href="<%=basePath%>jsp/hgltj/js/tablesort.css">
<script type="text/javascript" src="<%=basePath%>jsp/system/common/js/publicColor.js"></script>
<script type="text/javascript" src="jsp/commonstyle/js/js/My97DatePicker/WdatePicker.js" defer="defer"></script>
<script type="text/javascript" src="<%=basePath%>jsp/hgltj/js/tablesort.js"></script>
<script language="JavaScript">
function load()
//根据分辨率设置表格大小
maxw=document.getElementById("maintb").offsetWidth;
if(maxw<824)//1024分辨率未展开
mainbox.width="98%";
else if(maxw<1013)//1024分辨率展开
mainbox.width="98%";
else if(maxw<1081)//1280分辨率未展开
mainbox.width="95%";
else if(maxw<1270)//1280分辨未展开
mainbox.width="95%";
else//1280以上分辨展开
mainbox.width="98%";
</script>
<script>
function overIt()
var the_obj = event.srcElement;
if(the_obj.tagName.toLowerCase() == "td")
the_obj=the_obj.parentElement;
the_obj.oBgc=the_obj.currentStyle.backgroundColor;
the_obj.oFc=the_obj.currentStyle.color;
the_obj.style.backgroundColor='#4073C4';
the_obj.style.color='#ffffff';
the_obj.style.textDecoration='underline';
function outIt()
var the_obj = event.srcElement;
if(the_obj.tagName.toLowerCase() == "td")
the_obj=the_obj.parentElement;
the_obj.style.backgroundColor=the_obj.oBgc;
the_obj.style.color=the_obj.oFc;
the_obj.style.textDecoration='';
function serch()
document.getElementById("formName").action="<%=basePath %>hgltj.action?method=getHglpm";
document.getElementById("formName").submit();
function tbbt()
var jzrq=document.getElementById("jzrqId").value;
//var jxmc=document.getElementById("jxmcId").value;
window.open('<%=basePath %>hgltj.action?method=getHglpmTb&tjjxkshgl.jzrq='+jzrq+'&tjjxkshgl.zt='+1,'','height=650,width=1250,top=150,left=200,toobar=no,menubar=no,scrollbars=yes,resizable=no,location=no,');
function openwd()
document.getElementById("formName").action="<%=basePath %>hgltj.action?method=downJxhglPm";
document.getElementById("formName").submit();
</script>
</head>
<BODY onLoad="load()" style="background: url(images/cont_bg.gif); background-repeat: repeat-y">
<input type="hidden" name="method" value="getDriverInfoList"/>
<table border="0" width="100%" cellspacing="0" cellpadding="0" id="maintb">
<tr>
<td align="center">
<table width="90%" border="0" cellspacing="0" cellpadding="0" id="mainbox" style="background:url(jsp/commonstyle/images/usermessage_02.gif); background-repeat:repeat-x;" >
<!--宽度可变内容框-->
<tr >
<td width="33" height="27" style=" background:url(jsp/commonstyle/images/usermessage_01.gif); background-position:left; background-repeat:no-repeat;" ></td>
<td width="965" class="style1"><font color="black">驾校合格率排名</font></td>
<td width="14" height="27" style=" background:url(jsp/commonstyle/images/usermessage_03.gif); background-position:right; background-repeat:no-repeat;"> </td>
</tr>
<tr>
<td colspan="3">
<!--页面主体内容开始-->
<!--查询条件-->
<form action="" name="formName" method="post" style="margin:0px" id="formName" theme="simple">
<table width="100%" border="0" cellpadding="0" cellspacing="0" style="border-collapse:collapse;" id="tj" align="center">
<tr align="left">
<td class="tjbg1" style="text-align: left">
<!-- <input type="hidden" id="method" name="method" value="getHglpm"/> -->
统计日期:
<input type="text" name="tjjxkshgl.jzrq" id="jzrqId" value="<s:property value="tjjxkshgl.jzrq"/>" onclick="WdatePicker(skin:'whyGreen',dateFmt:'yyyy-MM')"/>
<!-- 驾校名称:
<s:select id="jxmcId" name="tjjxkshgl.jxxh" value="tjjxkshgl.jxxh" list="schoolList" listKey="jxxh" listValue="jxmc" headerKey="" headerValue="--请选择--" theme="simple"></s:select> -->
<input name="input" value=" 统 计 " type="button" class="normalbtn" onClick="serch()" style="margin-bottom: 5px" />
<input name="input" type="button" value=" 合格率图表 " onclick="tbbt()" class="normalbtn" style="margin-bottom: 5px" />
<input id="Button1" type="button" value=" 导 出 " onclick="openwd();" class="normalbtn" style="margin-bottom: 5px" />
</td>
</tr>
</table><!--查询结果-->
</form>
<!--查询结果-->
<table width="100%" border="0" cellpadding="4" cellspacing="1" bgcolor="#abcfff" id="cxjg" align="center">
<thead>
<tr class="tbtitle">
<td width="4%" align="center" class="t1">名次</td>
<td width="8%" align="center" class="t1">名称</td>
<td class="t1" width="5%" align="center">科目一</td>
<td class="t1" width="5%" align="center">科目二</td>
<td class="t1" width="5%" align="center">科目三</td>
<td class="t1" width="5%" align="center">平均合格率</td>
<td class="t1" width="5%" align="center">操作</td>
</tr>
</thead>
<s:iterator id="jxhgl" value="jxhelpmList" status="st">
<tr class="changeColor" onMouseOver="overIt()" onMouseOut="outIt()" style="cursor: hand" align="center">
<td><s:property value="#st.index+1"/></td>
<td><s:property value="#jxhgl.jxmc"/></td>
<td><s:property value="#jxhgl.km1hgl"/></td>
<td><s:property value="#jxhgl.km2hgl"/></td>
<td><s:property value="#jxhgl.km3hgl"/></td>
<td><s:property value="#jxhgl.avghgl"/>%</td>
<td>
<a href="javascript:" onclick="openWin('<%=basePath %>hgltj.action?method=getTbForJxxh&tjjxkshgl.jxxh=<s:property value="#jxhgl.jxxh"/>&tjjxkshgl.zt=1','',1250,750);">图表</a>
</td>
</tr>
</s:iterator>
</table>
</table>
</td>
</tr>
</table>
</body>
</html>
2)java代码演示:
[java] view plaincopyprint?
/**
* 驾校合格率导出excel图表
*/
//response.getOutputStream();// 取得输出流
response.reset();// 清空输出流
String tmptitle = "驾校合格率排名"; // 标题
response.setHeader("Content-disposition", "attachment; filename="+new String(tmptitle.getBytes(),"iso8859-1")+".xls");// 设定输出文件头
response.setContentType("application/vnd.ms-excel");// 定义输出类型
wbook = Workbook.createWorkbook(os); // 建立excel文件
WritableSheet wsheet = wbook.createSheet(tmptitle, 0); // sheet名称
// 设置excel标题
//cellFormat.setBackground(Colour.AQUA);
cellFormat.setFont(wfont);
label.setCellFormat(cellFormat);
wsheet.addCell(label);
//wsheet.addCell(new Label(0, 0, tmptitle, wcfFC));
wsheet.setRowView(0,500); //第一行高度
wsheet.mergeCells(0, 0, 6, 1); //合并单元格(第一列的第一行和第七列的第二行合并)
//wsheet.mergeCells(0, 1, 9, 1);
// wsheet.mergeCells(0, 2, 0, 4);
// wsheet.mergeCells(1, 2, 3, 2);
// wsheet.mergeCells(4, 2, 6, 2);
// wsheet.mergeCells(7, 2, 9, 2);
wsheet.setColumnView(0,10); //宽度
wsheet.setColumnView(1,25); //宽度
wsheet.setColumnView(2,10); //宽度
wsheet.setColumnView(3,10); //宽度
wsheet.setColumnView(4,10); //宽度
wsheet.setColumnView(5,10); //宽度
// 开始生成主体内容
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, "名次",wcfFC));
wsheet.addCell(new Label(1, 2, "驾校名称",wcfFC));
wsheet.addCell(new Label(2, 2, "科目一",wcfFC));
wsheet.addCell(new Label(3, 2, "科目二",wcfFC));
wsheet.addCell(new Label(4, 2, "科目三",wcfFC));
wsheet.addCell(new Label(5, 2, "合格率",wcfFC));
int count=jxhelpmList.size();
if(count>0) ////判断集合是否不为0
TjJxkshgl tjhgl=null;
for(int i=0;i<jxhelpmList.size();i++)
tjhgl=(TjJxkshgl)jxhelpmList.get(i);
wsheet.addCell(new Label(0, i+3, (i+1)+""));
wsheet.addCell(new Label(1, i+3, tjhgl.getJxmc()));
wsheet.addCell(new Label(2, i+3, tjhgl.getKm1hgl()));
wsheet.addCell(new Label(3, i+3, tjhgl.getKm2hgl()));
wsheet.addCell(new Label(4, i+3, tjhgl.getKm3hgl()));
wsheet.addCell(new Label(5, i+3, tjhgl.getAvghgl()));
参考技术A import java.io.IOException;
import java.io.OutputStream;
import java.math.BigDecimal;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class Test
public static void createDtcxEXCEL(HttpServletResponse response,
java.util.List queryList, int flag, String[] ywName, String fileName)
throws IOException
response.setContentType("application/vnd.ms-excel;charset=GBK");
response.addHeader("Content-Disposition", "attachment;filename="
+ new String(fileName.getBytes("GBK"), "ISO8859_1"));
OutputStream output = response.getOutputStream();
// 创建新的Excel 工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet;
HSSFRow row;
HSSFCell cell;
sheet = workbook.createSheet();
String strReportName = "查询结果列表";
workbook.setSheetName(0, strReportName); // 新建一名为strReportName的工作表
// 创建表头
// 在索引0的位置创建行(最顶端的行)
row = sheet.createRow((short) 0);
for (int kk = 0; kk < ywName.length; kk++)
// 在索引0的位置创建单元格(左上端)
cell = row.createCell( kk);
// cell.setCellStyle(HSSFCellStyle.ALIGN_CENTER);
// 定义单元格为字符串类型
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
// 设置字符显示格式,以unicode格式显示
//cell.setEncoding(HSSFCell.ENCODING_UTF_16);
// 在单元格中输入一些内容
cell.setCellValue(ywName[kk]);
int line = 1;
int cellWidth = ywName.length;
for (int i = 0; i < queryList.size(); i++)
// HashMap personInfo = (HashMap) queryList.get(i);
Object[] personInfo = (Object[]) queryList.get(i);
row = sheet.createRow((short) line);
for (int j = 0; j < cellWidth; j++)
cell = row.createCell(j);
//cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
if (personInfo[j + flag] instanceof Integer)
if (personInfo[j + flag] != null)
cell.setCellValue((Integer) personInfo[j + flag]);
else
cell.setCellValue("");
else if (personInfo[j + flag] instanceof BigDecimal)
if (personInfo[j + flag] != null)
cell.setCellValue(new Double(personInfo[j + flag]
.toString()));
else
cell.setCellValue("");
else if (personInfo[j + flag] instanceof Double)
if (personInfo[j + flag] != null)
cell.setCellValue((Double) personInfo[j + flag]);
else
cell.setCellValue("");
else
if (personInfo[j + flag] != null)
cell.setCellValue(personInfo[j + flag].toString());
else
cell.setCellValue("");
line++;
workbook.write(output);
output.flush();
output.close();
给你个工具方法,把它放到类里面,直接调用就可以了
我解释下参数
/**
* @param response 获取响应,在action中使用getResponse()
* @param 数据集(从数据库获得的数据,注意和ywName顺序对应)
* @param flag 有行号为1,无行号为0
* @param ywName excel中每列名称
* @param fileName excel名
*/
//导出代码
String[] yName="员工号","员工名称","机构号","机构名称","***xxx","dddd";
ExportExcel.createDtcxEXCEL(getResponse(), pgr.getData(), 1,yName , "龙大哥_"+new Date().toString());
最后 导出,默认文件名是“龙大哥_(当天日期)”
这个代码放心用,只要把参数传对,就可导出EXCEL
如果觉得可行,望采纳
本回答被提问者和网友采纳 参考技术B 要用第三方框架,好像有个jxl,还有其他的,你可以BAIDU一下。java用poi导出word文档,我要导出一个表格,表格的单元格中还要有一个表格,请问怎么实现
java用poi导出word文档,我要导出一个表格,表格的单元格中还要有一个表格,请问怎么实现
参考技术A 有个最简单,不用使用任何 poi 或其他第三方类库的方法生成 excel ,或 word ,你把一个生成好的 word 例子用文件另存为 xml , docx 之类,然后你再直接用记事本去打开这个 docx ,你就会发现是 xml 格式,
这个时候,你在程序里面就直接用普通代码生成这个 xml 就可以了。追问
我就是这样操作的,但是,现在是需要在这个模板中的单元格中再加一个表格,且表格中的数据是动态增加的,我知道你的答案是复制的,但是请你帮忙看看我的情况怎么解决
以上是关于用java将数据导出到wps表格中,怎么实现的主要内容,如果未能解决你的问题,请参考以下文章
请问如何将金蝶k3帐套里的财务报表导出到桌面,生成电子表格?
mysql数据库中的表格数据如何导入wps中的excel,请问该怎么去做