<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<html><head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=ProgId content=FrontPage.Editor.Document>
<meta name=Generator content="Microsoft Excel 11">
<style type="text/CSS">
{
.showTD {color: #003366; }
.hiddenTD {display:none; }
.onFocue {color: #CC66FF;}
.offFocue {color:#003366;}
}
#floater {
LEFT: 445px; POSITION: absolute; TOP: 15px; VISIBILITY: visible; WIDTH: 125px; Z-INDEX: 10}
</STYLE>
</head>
<body><object classid="clsid:0002E559-0000-0000-C000-000000000046" id="Spreadsheet1" VIEWASTEXT>
<param name="HTMLURL" value="">
<param name="HTMLData" value="">
<param name="DataType" value="HTMLDATA">
<param name="AutoFit" value="0">
<param name="DisplayColHeaders" value="-1">
<param name="DisplayGridlines" value="-1">
<param name="DisplayHorizontalScrollBar" value="-1">
<param name="DisplayRowHeaders" value="-1">
<param name="DisplayTitleBar" value="0">
<param name="DisplayToolbar" value="0">
<param name="DisplayVerticalScrollBar" value="-1">
<param name="EnableAutoCalculate" value="-1">
<param name="EnableEvents" value="-1">
<param name="MoveAfterReturn" value="-1">
<param name="MoveAfterReturnDirection" value="0">
<param name="RightToLeft" value="0">
<param name="ViewableRange" value="1:65536">
</object>
<div class="hiddenTD" id="tablers">
<table width=95% align=center border=1 cellspacing=0 cellpadding=0>
<tr>
<td>name</td>
<td>password</td>
<td>age</td>
<td>email</td>
<tr>
<div align="center"><td>kang</td></div>
<td>123456</td>
<td>20</td>
<td>[email protected]</td>
<tr>
<td>shan</td>
<td>123456</td>
<td>22</td>
<td>[email protected]</td>
<tr>
<td>wei</td>
<td>123456</td>
<td>18</td>
<td>[email protected]</td>
</table>
</div>
<input type=button name=print value="打印" onclick="alert(Spreadsheet1)">
<script language="javascript">
Spreadsheet1.HTMLData = tablers.innerHTML ;
</script>
</body>
</html>现在我已经把数据放入excel中显示了.
但是不知道如何得到页面中的excel。
假如用记在页面中的excel中增加了数据或者是删除了数据、修改等操作。
请问是如何判断用户增加、修改、删除数据呢?
<html><head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=ProgId content=FrontPage.Editor.Document>
<meta name=Generator content="Microsoft Excel 11">
<style type="text/CSS">
{
.showTD {color: #003366; }
.hiddenTD {display:none; }
.onFocue {color: #CC66FF;}
.offFocue {color:#003366;}
}
#floater {
LEFT: 445px; POSITION: absolute; TOP: 15px; VISIBILITY: visible; WIDTH: 125px; Z-INDEX: 10}
</STYLE>
</head>
<body><object classid="clsid:0002E559-0000-0000-C000-000000000046" id="Spreadsheet1" VIEWASTEXT>
<param name="HTMLURL" value="">
<param name="HTMLData" value="">
<param name="DataType" value="HTMLDATA">
<param name="AutoFit" value="0">
<param name="DisplayColHeaders" value="-1">
<param name="DisplayGridlines" value="-1">
<param name="DisplayHorizontalScrollBar" value="-1">
<param name="DisplayRowHeaders" value="-1">
<param name="DisplayTitleBar" value="0">
<param name="DisplayToolbar" value="0">
<param name="DisplayVerticalScrollBar" value="-1">
<param name="EnableAutoCalculate" value="-1">
<param name="EnableEvents" value="-1">
<param name="MoveAfterReturn" value="-1">
<param name="MoveAfterReturnDirection" value="0">
<param name="RightToLeft" value="0">
<param name="ViewableRange" value="1:65536">
</object>
<div class="hiddenTD" id="tablers">
<table width=95% align=center border=1 cellspacing=0 cellpadding=0>
<tr>
<td>name</td>
<td>password</td>
<td>age</td>
<td>email</td>
<tr>
<div align="center"><td>kang</td></div>
<td>123456</td>
<td>20</td>
<td>[email protected]</td>
<tr>
<td>shan</td>
<td>123456</td>
<td>22</td>
<td>[email protected]</td>
<tr>
<td>wei</td>
<td>123456</td>
<td>18</td>
<td>[email protected]</td>
</table>
</div>
<input type=button name=print value="打印" onclick="alert(Spreadsheet1)">
<script language="javascript">
Spreadsheet1.HTMLData = tablers.innerHTML ;
</script>
</body>
</html>现在我已经把数据放入excel中显示了.
但是不知道如何得到页面中的excel。
假如用记在页面中的excel中增加了数据或者是删除了数据、修改等操作。
请问是如何判断用户增加、修改、删除数据呢?
解决方案 »
- java问题
- spring的问题
- error信息并不往log4j指定的文件输入
- 该面试了,各位大哥大姐们给点面试题和面试经验吧,谢谢了!!呵呵
- 怎样配置path和classpath,在线等,跪求
- DOM4J 解析错误, 大家来看看...
- 我这样设置的tomcat环境变量怎么不对?
- 问个问题,有没有连接上数据库,可以把数据库中的表的数据,转成xml文件,只需要指定选项就可以了!
- Redis Cluster能否做HA双机主从热备?
- 新人求助,有关使用redisTemplate缓存数据中文,结果不是二进制!!注意,不是二进制,而是正常显示中文...
- java用的数据库
- 一个关于Struts中MethodFilterInterceptor的问题
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hwpf.extractor.*;
import org.apache.poi.hwpf.HWPFDocument;import org.apache.poi.hwpf.usermodel.*;//import LuceneBook.ChineseAnalyzer;import java.io.FileInputStream;
import java.io.File;public class WordParserTest { public static String excelfile = "F:\\docs\\Book1.xls"; public static String wordfile = "F:\\docs\\Site Linkmap Table of Contents.doc"; public static void main(String argv[]) throws Exception { //getWordText(wordfile);
//getWordText(wordfile);
//getExcelText(excelfile); } public static void getWordText(String filename) throws Exception {
FileInputStream in = new FileInputStream(new File(filename)); HWPFDocument doc = new HWPFDocument(in);
Range range = doc.getRange();
String text = range.text(); for (int i = 0; i < range.numParagraphs(); i++) {
Paragraph p = range.getParagraph(i); // 取得每个段落
// 组合文字并添加换行
text = p.text();
text.trim();
// text = " <br> " ;
System.out.println(text);
}
} // 获取doc内纯文本信息
public static void getWordText2(String filename) throws Exception {
FileInputStream in = new FileInputStream(new File(filename)); WordExtractor extractor = new WordExtractor(in);
String text = extractor.getText();
System.out.println(text);
} // 获取Excel内纯文本信息
public static void getExcelText(String filename) throws Exception { HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(filename));
HSSFSheet sheet = workbook.getSheetAt(0); // 创建对工作表的引用。 for (int i = 0; i < workbook.getNumberOfSheets(); i++) // 循环取表单对象
{
System.out.print("########## sheet:--" + i + " --########## ");
sheet = workbook.getSheetAt(i); // 查阅文档的Sheet属性
if (sheet != null) {
for (int m = 0; m < sheet.getLastRowNum(); m++) // 按行循环取行对象
{
HSSFRow row = sheet.getRow(m);
if (row == null) {
break;
}
System.out.println("");
if (row.getLastCellNum() <= 0)
break;
System.out.println("-----line:--" + m + " ---- ,col num:" + row.getLastCellNum());
for (int n = 0; n < row.getLastCellNum(); n++) // 按列循环取单元格对象
{
HSSFCell cell = row.getCell((short) n); if (cell == null) {
break;
}
int type = cell.getCellType();
switch (type) {
case 0:
System.out.print(cell.getNumericCellValue() + " , ");
break;
case 1:
System.out.print(cell.getStringCellValue() + " , ");
break;
case 2:
break;
case 3:
System.out.print(" , ");
break;
default:
System.out.print("未知的单元类型" + type + " , ");
}
}
}
}
System.out.println();
}
}}
B/S Excel 在客户端 页面执行在服务器。
这样的修改是在客户端,你的web服务器是不可知的.
你要用excel的组件解析,显示到ie中(用html控件,或者ajax判断修改哦...
这样挺复杂的哦,呵呵excel解析工具:
jxl
jexcelapi http://jexcelapi.sourceforge.net/
Apache POI 这些都是可以的哦
你这上面所写的。哪如何得到页面上的excel文件呢?
我就这个而郁闷。。是根据object中的id吗?
然后在后台把它转换在Excel文件?
在页面上的数据希望显示成Excel表格样子,也可以对页面数据进行类似Excel的操作
点击保存之后,就提交变量部分的数据到数据库
这样理解对吗
没有要在页面上解决啊。只要用户点击保存。就可以放到后能去解决啊。。问题是:如何在后台获得页面上的excel.
如果获得了。如果判断用户修改了哪些数据和增加了哪些数据等
就是不知道如何在后台获得页面上的excel.
如果获得了。如果判断用户修改了哪些数据和增加了哪些数据等
2. 当点击提交时,你需要进行当初页面数据 和 提交时页面数据 数据变化的增量,建议使用datastore
3. 提交都服务器,数据传送的格式问题,建议使用json
4. 服务器解析json串,并且操作数据库
5. 提交方式使用ajax
整个流程就是这样,和我现在在做的公共平台的前端有点相似,实现起来细节问题太多,一个人的话很难实现
1、页面还是HTML,使用CSS,控制提交表单(form)的格式,把它设计为EXCELL类似的样式。
2、提交到后台,处理也跟EXCELL没关系。你只需要按照正常的参加接收就行了。
使用JS控制。如果TABLE某一行有修改,作个标记。然后设置一个参加传给服务器。以下JSP供参考
<%@ page language="java" contentType="text/html;charset=UTF-8" %>
<%@ page import="com.java91.common.constant.OptionType"%>
<%@ page import="com.java91.common.manager.OptionManager"%>
<%@ page import="com.opensymphony.xwork2.util.*"%>
<%@page import="com.java91.common.util.*"%>
<%@ page import="com.java91.produce.auto.beans.*"%>
<%@ page import="com.java91.common.auto.beans.*"%>
<%@ page import="java.util.*"%>
<%@ taglib uri="java91" prefix="java91" %>
<%@ taglib uri="fmt" prefix="fmt"%><html>
<head><script language='javascript' charset='utf-8' src='/dwr/interface/commonDwrAction.js'></script>
<script language='javascript' charset='utf-8' src='/dwr/engine.js'></script>
<script language='javascript' charset='utf-8' src='/dwr/util.js'></script><script language='javascript' charset='utf-8' src='/js/framework.js'></script><script language='javascript' charset='utf-8' src='/js/ecside.js'></script>
<script language='javascript' charset='utf-8' src='/js/ecside_msg_utf8_cn.js'></script>
<script language='javascript' charset='utf-8' src='/js/prototype_mini.js'></script>
<script language='javascript' charset='utf-8' src='/js/procBar.js'></script><script language='javascript' charset='utf-8' src='/js/area.js'></script>
<script language='javascript' charset='utf-8' src='/js/areafun.js'></script>
<link rel="stylesheet" type="text/css" href="/css/ecside_style.css"/></head>
<body >
<%ValueStack vs = (ValueStack)request.getAttribute("struts.valueStack");List workFlowListList=(ArrayList)vs.findValue("workFlowListList");%>
<form name="editForm" action="produce/produceAction!addEditWorkFlowListSave.action" method="post"><input type="hidden" value="${selectedWorkFlowid}" name="selectedWorkFlowid" />
<input type="hidden" value="" name="updateid" />
<table id="workFlowListList" class="datalist" >
<tr align="center">
<th width="40">序号</th>
<th width="110">工序</th>
<th width="40">下一序号</th>
<th width="110">下一工序</th>
<th width="60">完成度</th>
<th width="40">是否完工</th>
<th width="100">备注</th>
<th width="90">修改时间</th>
<th width="80">修改人</th>
<th width="40">是否生效</th>
<th width="30">操作</td>
</tr> <%
WorkFlowList workFlowList;
if(null!=workFlowListList){
for(int i=0;i<workFlowListList.size();i++){
workFlowList=(WorkFlowList)workFlowListList.get(i);%>
<tr align="center" name="<%=workFlowList.getWorkflowllistid()%>">
<input type="hidden" value="<%=workFlowList.getWorkflowllistid()%>" name="workFlowList.workflowllistid" />
<td ><input type="text" onchange="setEdit(this);" style="width:100%;" value="<%=CommonUtil.getDefault(workFlowList.getNumber())%>" name="workFlowList.number" /></td>
<td><select onchange="setEdit(this);" style="width:100%;" name="workFlowList.workstepid"><option value="">-请选择-</option><java91:genoption type="<%=OptionType.workStep%>" code="<%=CommonUtil.getDefault(workFlowList.getWorkstepid())%>" /></select></td> <td ><input type="text" onchange="setEdit(this);" style="width:100%;" value="<%=CommonUtil.getDefault(workFlowList.getNextnumber())%>" name="workFlowList.nextnumber" /></td>
<td><select onchange="setEdit(this);" style="width:100%;" name="workFlowList.nextstepid"><option value="">-请选择-</option><java91:genoption type="<%=OptionType.workStep%>" code="<%=CommonUtil.getDefault(workFlowList.getNextstepid())%>" /></select></td>
<td ><input type="text" onchange="setEdit(this);" style="width:100%;" value="<%=CommonUtil.getDefault(workFlowList.getPercent())%>" name="workFlowList.percent" /></td>
<td><select onchange="setEdit(this);" style="width:100%;" name="workFlowList.isend"><option value="">-请选择-</option><java91:genoption type="<%=OptionType.YesOrNo%>" code="<%=CommonUtil.getDefault(workFlowList.getIsend())%>" /></select></td>
<td ><input type="text" onchange="setEdit(this);" style="width:100%;" value="<%=CommonUtil.getDefault(workFlowList.getRe())%>" name="workFlowList.re" /></td>
<td><input style="width:100%;" type="text" value="<%=CommonUtil.getDateString(workFlowList.getUpdatetime(),"yyyy-MM-dd HH:mm")%>" name="workFlowList.updatetime" ${readonly}/></td>
<td ><input type="text" onchange="setEdit(this);" style="width:100%;" value="<%=CommonUtil.getDefault(workFlowList.getUpdateby())%>" name="workFlowList.updateby" /></td>
<td><select onchange="setEdit(this);" style="width:100%;" name="workFlowList.active"><option value="">-请选择-</option><java91:genoption type="<%=OptionType.YesOrNo%>" code="<%=CommonUtil.getDefault(workFlowList.getActive())%>" /></select></td>
<td align="center" >
<img style="cursor:hand" src="/images/button/delete.gif"onclick="deleteRow(this.parentNode.parentNode.rowIndex);" /></td>
</tr>
<%}} %><tr>
<th colspan="13" style="text-align:right;background-color:#FFFFFF;">
<input type="button" value="新 增" onclick="addRow(this.parentNode.parentNode.rowIndex);" >
<input type="button" value="保 存" onclick="submit()">
</th>
</tr></table>
<br>
<br></form>
<!-- 新建记录所用模板 -->
<textarea id="add_template" rows="" cols="" style="display:none">
<input type="text" style="width:100%;" value="" name="workFlowList.number" /><tpsp />
<select style="width:100%;" name="workFlowList.workstepid"><option value="">-请选择-</option><java91:genoption type="<%=OptionType.workStep%>" code="" /></select><tpsp />
<input type="text" style="width:100%;" value="" name="workFlowList.nextnumber" /><tpsp />
<select style="width:100%;" name="workFlowList.nextstepid"><option value="">-请选择-</option><java91:genoption type="<%=OptionType.workStep%>" code="" /></select><tpsp />
<input type="text" style="width:100%;" value="" name="workFlowList.percent" /><tpsp />
<select style="width:100%;" name="workFlowList.isend"><option value="">-请选择-</option><java91:genoption type="<%=OptionType.YesOrNo%>" code="" /></select><tpsp />
<input type="text" style="width:100%;" value="" name="workFlowList.re" /><tpsp />
<tpsp />
<tpsp />
<select style="width:100%;" name="workFlowList.active"><option value="">-请选择-</option><java91:genoption type="<%=OptionType.YesOrNo%>" code="" /></select> <tpsp />
<img style="cursor:hand" src="/images/button/delete.gif"onclick="deleteRow(this.parentNode.parentNode.rowIndex);" />
</textarea>
<div id="editTaxtarea" style="POSITION:absolute;display:none;background-color:#FFF6F9;width:150px; height:100px;">
<textarea id="taxtarea" rows="9" cols="19" style="FONT-SIZE: 11px;width:180px; height:150px;line-height:18px;border:0px solid #AFDDF4;color:#697268;background-color:#FFF6F9;" onKeyDown="if (event.keyCode==13) confirmEditTaxtarea();"> </textarea>
<div style="text-align:right;color:#697268;"><a id=rowidMarkObj onclick="confirmEditTaxtarea();" title=确定 href="#">确定</a> <a onclick="cancleEditTaxtarea();" title=关闭 href="#">取消</a> </div>
<br>
</div><script type="text/javascript">function submit(){
editForm.submit();
}var flat="${flat}";
if(flat!=""){
alert(flat);
}
var reload="${reload}";if(reload!="" && reload=="true"){
parent.window.location.reload();
}</script><script>
function addRow(myraw){
var table=id("workFlowListList");
var template=idvalue("add_template");
var newTr=table.insertRow(myraw);
template=template.split("<tpsp />");
var cells=[];
var columnNum=table.rows[0].cells.length;
for (var i=0;i<columnNum;i++ ){
cells[i]=newTr.insertCell(i);
cells[i].innerHTML=template[i];
//alert(cells[i].innerHTML);
}
}function deleteRow(i){
id("workFlowListList").deleteRow(i);
}function setEdit(obj){
obj.style.backgroundColor ="#FFEAB6"; var id=obj.parentNode.parentNode.name;
name("updateid").value=","+name("updateid").value+id+",";
}
</script>
</body>
</html>
这个参数就是要传到后台服务端的已修改的ID集,是这种格式:3434,4545,function setEdit(obj){
obj.style.backgroundColor ="#FFEAB6"; var id=obj.parentNode.parentNode.name;
name("updateid").value=","+name("updateid").value+id+",";
}
行列求和。。等。