问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用java将数据导出到wps表格中,怎么实现

发布网友 发布时间:2022-05-01 21:08

我来回答

3个回答

热心网友 时间:2022-04-15 08:05

一:页面图片显示预览:

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()));  

     

            }  

热心网友 时间:2022-04-15 09:23

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



如果觉得可行,望采纳

热心网友 时间:2022-04-15 10:58

要用第三方框架,好像有个jxl,还有其他的,你可以BAIDU一下。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
天一共卖出136张电影票,上午卖出去86张,下午卖出多少张。 17届华杯赛小学高年级组的初赛的这道题怎么做? 美特斯工业系统(中国)有限公司MTS公司发展史 mts公司是什么单位 华夏八大古姓是哪八个 ...耳鸣 单眼瞳孔上移 平常手机看得多 会不会是脑瘤 ...了首付给儿子和儿媳买了一套房子,房照上面写的是儿子和儿媳的... GBA最终幻想战略卡住 最终幻想战略版 大bug (狮子战争?就是GBA上的) GBA版最终幻想战略版的BUG问题,很急的 未能用指定的连接串 &quot;连接字段&quot; 连接到数据源,连接串中的用户名与密码已隐藏 世说新语第一&#39;则第二篇主题 世说新语德行第一第一则的朗读停顿 世说新语第一则咏雪,词 《世说新语》德行第一的第一则的感悟与启示。 世说新语 德行的第一则到第五则的解释 初一世说新语两则翻译 世说新语的第一章的翻绎 &lt;&lt;世说新语-德行&gt;&gt;第1篇解释 世说新语 第一篇怎么读? 世说新语-德行第1篇解释 世说新语第一篇陈仲举尊重贤士的文意 《世说新语》德行第一的第一篇给了我们什么感悟? 世说新语言语第一篇的含义? 世说新语第一则翻译 世说新语 第一篇是什么 作文:我改变了_____的色彩 600字左右 要原创的 别在百度上找一个就给我发过来了 !!!!!!! 求作文 我改变了 的颜色 我改变了性格的色彩 作文500字左右 &lt;&lt;我改变了生活的色彩&gt;&gt;作文 600字左右 VC++用UNICODE输出中文 string reportPath = Application.StartupPath.Substring(0, Application.StartupPath.Substring(0, STR CTR KYC是什么 关于银行反洗钱方面的 旧车不换车机不破线,加装无线充电和Carplay是什么体验? Java 中StringBuilder的作用? 如何在fastreport中使用数据筛选 苹果将对未来iphone无线化 或给车主使用CarPlay带来不便 VB中水晶报表的查询 耘电carplay怎么样 篮球牌子哪些比较合适水泥地 C#如何调用Fastreport java如何读取excel中报表(柱状图)的信息 请问在水泥地上打篮球,哪种材质的篮球更好,篮球鞋应该选什么材质的 在室外打篮球用什么材质的篮球比较好呢? 水泥地。。 Delphi 时间变量提示Invalid floating point operation,弄了一天都弄不过来 搜狗输入法 str数据文件格式出错 8000MB等于多少G啊? 什么篮球适合在室外打,水泥地ProSelect专选的篮球能打吗? 8000M流量是多少 delphi开发USB时用到HidController控件,里面有这么一个 CurrentDevice.OnData := ShowRead