用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,请问该怎么去做

怎么将几十万数据导出到excel

Java问题: 怎么样将网页上的数据导入到excel中并下载下来,求,详细源码参考,谢谢

java里将从excel读到的数据用csv导出,代码怎么写

java怎么实现把页面的表格另存为一个word文档,求各位大神指导