一、 直接拷贝整个表格到EXCEL中
二、 通过遍历表格,给EXCEL中相应的单元格赋值。
三、 把表格中的内容提取出来,利用IE的另存为.csv的格式。
各方法的好处:
1. 直接拷贝表格,能够保留表格中的原有的格式,比如,列,行的合并,对齐方式,底色等等,
2. 通过遍历表格,比较灵活,可以遍历表格某些需要部分的内容。
3. 利用IE的另存为,不用创建ActiveXObject对象,可以处理表格合并方面的问题。
各方法的缺点:
1. 可能弹出脚本错误:Automation不能创建对象。
解决方法:启用IE安全设置中的:对没有标记为安全的ActiveX控件进行初始化和脚本运行。
由于整个表格复制到EXCEL中,给表格加个标题,并加入到EXCEL中可能会遇到麻烦。
解决方法:首先在表格中加入第一行
<tr><td colspan="x" align="center"
X,表示整个表格的列数,复制完整个表格后,加如下代码,oSheet为当前活动的sheet.
oSheet.Range(oSheet.Cells(1, 1), oSheet.Cells(1, x)).value = "表格标题" ;//设置标题
oSheet.Rows(1).Font.Size = 16; //设置文字大小
oSheet.Rows(1).Font.Name = "宋体" ;//设置文字字体
注:以下属性我没用着,可能有用,也可能会报错
oSheet.Range(oSheet.Cells(1,1), oSheet.Cells(1,14)).mergecells=true ; //合并单元格
oSheet.Range(oSheet.Cells(1,1), oSheet.Cells(1,14)).Interior.ColorIndex=6;//设置底色?
oSheet.Range(oSheet.Cells(1,1), oSheet.Cells(1,14)).Font.ColorIndex=5;//设置字体色?
oSheet.Rows(1).RowHeight=20; //设置列高
oSheet.Cells(iRow,iCol).Halignment=’2’//设置字体居中
2. 可能弹出脚本错误:Automation不能创建对象(解决方法如上)。
表格内容写入到EXCEL中无表格线(未解决)
且有单元格合并时会有问题,解决方法:合并单元格后再写数据。
oSheet.Range(oSheet.Cells(1,1), oSheet.Cells(1,14)).mergecells=true ; //合并单元格
3. 表格内容写入到EXCEL中无表格线(未解决)
表格格式复杂时,会有问题,(rowspan>1 or colspan>1),解决方法:一般都是表头格式比较复杂,可先把表头写死,然后再循环写其他数据。
代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
"Generator" CONTENT="EditPlus"
"Author" CONTENT=""
"Keywords" CONTENT=""
"Description" CONTENT=""
</HEAD>
<BODY>
"tableExcel" width="100%" border="1" cellspacing="0" cellpadding="0"
<tr>
<td colspan="5" align="center"
</tr>
<tr>
<td>列标题1</td>
<td>列标题2</td>
<td>列标题3</td>
<td>列标题4</td>
<td>列标题5</td>
</tr>
<tr>
<td>aaa</td>
<td>bbb</td>
<td>ccc</td>
<td>ddd</td>
<td>eee</td>
</tr>
<tr>
<td>AAA</td>
<td>BBB</td>
<td>CCC</td>
<td>DDD</td>
<td>EEE</td>
</tr>
<tr>
<td>FFF</td>
<td>GGG</td>
<td>HHH</td>
<td>III</td>
<td>JJJ</td>
</tr>
</table>
<input type="button" οnclick="javascript:method1('tableExcel');" value="第一种方法导入到EXCEL"
<input type="button" οnclick="javascript:method2('tableExcel');" value="第二种方法导入到EXCEL"
<input type="button" οnclick="javascript:getXlsFromTbl('tableExcel',null);" value="第三种方法导入到EXCEL"
<SCRIPT LANGUAGE="javascript"
function
{//整个表格拷贝到EXCEL中
var
var oXL = new ActiveXObject("Excel.Application"
//创建AX对象excel
var
//获取workbook对象
var
//激活当前sheet
var
sel.moveToElementText(curTbl);
//把表格中的内容移到TextRange中
sel.select();
//全选TextRange中内容
sel.execCommand("Copy"
//复制TextRange中内容
oSheet.Paste();
//粘贴到活动的EXCEL中
oXL.Visible = true
//设置excel可见属性
}
function method2(tableid) //读取表格中每个单元到EXCEL中
{
var
var oXL = new ActiveXObject("Excel.Application"
//创建AX对象excel
var
//获取workbook对象
var
//激活当前sheet
var
//取得表格行数
for
{
var
//取得每行的列数
for
{
oSheet.Cells(i + 1, j + 1).value = curTbl.rows(i).cells(j).innerText;
//赋值
}
}
oXL.Visible = true
//设置excel可见属性
}
function
try
var allStr = ""
var curStr = ""
//alert("getXlsFromTbl");
if (inTblId != null && inTblId != "" && inTblId != "null"
curStr = getTblData(inTblId, inWindow);
}
if (curStr != null
allStr += curStr;
}
else
alert("你要导出的表不存在!"
return
}
var
doFileExport(fileName, allStr);
}
catch
alert("导出发生异常:" + e.name + "->" + e.description + "!"
}
}
//---------------------------------------------
function
var
//alert("getTblData is " + inWindow);
var
if (!!inWindow && inWindow != ""
if
return null
}
else
tblDocument = eval(inWindow).document;
}
}
var
var outStr = ""
if (curTbl != null
for (var
//alert("j is " + j);
for (var
//alert("i is " + i);
if
outStr += " "
rows -= 1;
}
outStr += curTbl.rows[j].cells[i].innerText + " "
if
for (var
outStr += " "
}
}
if
if
rows = curTbl.rows[j].cells[i].rowSpan - 1;
}
}
}
outStr += " "
}
}
else
outStr = null
alert(inTbl + "不存在!"
}
return
}
function
var d = new
var
var curMonth = ""
var curDate = ""
var curHour = ""
var curMinute = ""
var curSecond = ""
if
curMonth = "0"
}
if
curDate = "0"
}
if
curHour = "0"
}
if
curMinute = "0"
}
if
curSecond = "0"
}
var fileName = "leo_zhang" + "_" + curYear + curMonth + curDate + "_"
+ curHour + curMinute + curSecond + ".csv"
//alert(fileName);
return
}
function
var xlsWin = null
if (!!document.all("glbHideFrm"
xlsWin = glbHideFrm;
}
else
var
var
var openPara = "left="
+ ",top="
+ ",scrollbars=no,width=" + width + ",height="
xlsWin = window.open("" , "_blank"
}
xlsWin.document.write(inStr);
xlsWin.document.close();
xlsWin.document.execCommand('Saveas' , true
xlsWin.close();
}
</SCRIPT>
</BODY>
</HTML>
一、 直接拷贝整个表格到EXCEL中
二、 通过遍历表格,给EXCEL中相应的单元格赋值。
三、 把表格中的内容提取出来,利用IE的另存为.csv的格式。
各方法的好处:
1. 直接拷贝表格,能够保留表格中的原有的格式,比如,列,行的合并,对齐方式,底色等等,
2. 通过遍历表格,比较灵活,可以遍历表格某些需要部分的内容。
3. 利用IE的另存为,不用创建ActiveXObject对象,可以处理表格合并方面的问题。
各方法的缺点:
1. 可能弹出脚本错误:Automation不能创建对象。
解决方法:启用IE安全设置中的:对没有标记为安全的ActiveX控件进行初始化和脚本运行。
由于整个表格复制到EXCEL中,给表格加个标题,并加入到EXCEL中可能会遇到麻烦。
解决方法:首先在表格中加入第一行
<tr><td colspan="x" align="center"
X,表示整个表格的列数,复制完整个表格后,加如下代码,oSheet为当前活动的sheet.
oSheet.Range(oSheet.Cells(1, 1), oSheet.Cells(1, x)).value = "表格标题" ;//设置标题
oSheet.Rows(1).Font.Size = 16; //设置文字大小
oSheet.Rows(1).Font.Name = "宋体" ;//设置文字字体
注:以下属性我没用着,可能有用,也可能会报错
oSheet.Range(oSheet.Cells(1,1), oSheet.Cells(1,14)).mergecells=true ; //合并单元格
oSheet.Range(oSheet.Cells(1,1), oSheet.Cells(1,14)).Interior.ColorIndex=6;//设置底色?
oSheet.Range(oSheet.Cells(1,1), oSheet.Cells(1,14)).Font.ColorIndex=5;//设置字体色?
oSheet.Rows(1).RowHeight=20; //设置列高
oSheet.Cells(iRow,iCol).Halignment=’2’//设置字体居中
2. 可能弹出脚本错误:Automation不能创建对象(解决方法如上)。
表格内容写入到EXCEL中无表格线(未解决)
且有单元格合并时会有问题,解决方法:合并单元格后再写数据。
oSheet.Range(oSheet.Cells(1,1), oSheet.Cells(1,14)).mergecells=true ; //合并单元格
3. 表格内容写入到EXCEL中无表格线(未解决)
表格格式复杂时,会有问题,(rowspan>1 or colspan>1),解决方法:一般都是表头格式比较复杂,可先把表头写死,然后再循环写其他数据。
代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
"Generator" CONTENT="EditPlus"
"Author" CONTENT=""
"Keywords" CONTENT=""
"Description" CONTENT=""
</HEAD>
<BODY>
"tableExcel" width="100%" border="1" cellspacing="0" cellpadding="0"
<tr>
<td colspan="5" align="center"
</tr>
<tr>
<td>列标题1</td>
<td>列标题2</td>
<td>列标题3</td>
<td>列标题4</td>
<td>列标题5</td>
</tr>
<tr>
<td>aaa</td>
<td>bbb</td>
<td>ccc</td>
<td>ddd</td>
<td>eee</td>
</tr>
<tr>
<td>AAA</td>
<td>BBB</td>
<td>CCC</td>
<td>DDD</td>
<td>EEE</td>
</tr>
<tr>
<td>FFF</td>
<td>GGG</td>
<td>HHH</td>
<td>III</td>
<td>JJJ</td>
</tr>
</table>
<input type="button" οnclick="javascript:method1('tableExcel');" value="第一种方法导入到EXCEL"
<input type="button" οnclick="javascript:method2('tableExcel');" value="第二种方法导入到EXCEL"
<input type="button" οnclick="javascript:getXlsFromTbl('tableExcel',null);" value="第三种方法导入到EXCEL"
<SCRIPT LANGUAGE="javascript"
function
{//整个表格拷贝到EXCEL中
var
var oXL = new ActiveXObject("Excel.Application"
//创建AX对象excel
var
//获取workbook对象
var
//激活当前sheet
var
sel.moveToElementText(curTbl);
//把表格中的内容移到TextRange中
sel.select();
//全选TextRange中内容
sel.execCommand("Copy"
//复制TextRange中内容
oSheet.Paste();
//粘贴到活动的EXCEL中
oXL.Visible = true
//设置excel可见属性
}
function method2(tableid) //读取表格中每个单元到EXCEL中
{
var
var oXL = new ActiveXObject("Excel.Application"
//创建AX对象excel
var
//获取workbook对象
var
//激活当前sheet
var
//取得表格行数
for
{
var
//取得每行的列数
for
{
oSheet.Cells(i + 1, j + 1).value = curTbl.rows(i).cells(j).innerText;
//赋值
}
}
oXL.Visible = true
//设置excel可见属性
}
function
try
var allStr = ""
var curStr = ""
//alert("getXlsFromTbl");
if (inTblId != null && inTblId != "" && inTblId != "null"
curStr = getTblData(inTblId, inWindow);
}
if (curStr != null
allStr += curStr;
}
else
alert("你要导出的表不存在!"
return
}
var
doFileExport(fileName, allStr);
}
catch
alert("导出发生异常:" + e.name + "->" + e.description + "!"
}
}
//---------------------------------------------
function
var
//alert("getTblData is " + inWindow);
var
if (!!inWindow && inWindow != ""
if
return null
}
else
tblDocument = eval(inWindow).document;
}
}
var
var outStr = ""
if (curTbl != null
for (var
//alert("j is " + j);
for (var
//alert("i is " + i);
if
outStr += " "
rows -= 1;
}
outStr += curTbl.rows[j].cells[i].innerText + " "
if
for (var
outStr += " "
}
}
if
if
rows = curTbl.rows[j].cells[i].rowSpan - 1;
}
}
}
outStr += " "
}
}
else
outStr = null
alert(inTbl + "不存在!"
}
return
}
function
var d = new
var
var curMonth = ""
var curDate = ""
var curHour = ""
var curMinute = ""
var curSecond = ""
if
curMonth = "0"
}
if
curDate = "0"
}
if
curHour = "0"
}
if
curMinute = "0"
}
if
curSecond = "0"
}
var fileName = "leo_zhang" + "_" + curYear + curMonth + curDate + "_"
+ curHour + curMinute + curSecond + ".csv"
//alert(fileName);
return
}
function
var xlsWin = null
if (!!document.all("glbHideFrm"
xlsWin = glbHideFrm;
}
else
var
var
var openPara = "left="
+ ",top="
+ ",scrollbars=no,width=" + width + ",height="
xlsWin = window.open("" , "_blank"
}
xlsWin.document.write(inStr);
xlsWin.document.close();
xlsWin.document.execCommand('Saveas' , true
xlsWin.close();
}
</SCRIPT>
</BODY>
</HTML>
java导出数据到excel的几种方法的比较
转载
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Java结束线程的三种方法
用线程进行Socket监听请求,或是其他的需要循环处理的任务。在这种情况下,一般是将这些任务放在一个循...
Java结束线程 阻塞状态 代码示例 跳出循环 -
复制文件的三种方法
复制文件的三种方法:1、Files.copy(path, new FileOutputStream(dest));。2、利用字节流。3、利用字符流。
IO流文件拷贝 IO流 Path Files java -
事件监听的三种方法
1.实现事件监听,总的来讲就是有三个步骤 1)事件源注册事件监听器 -- 事件源.addXXXListener( obj ) ,obj称为监听者 2 ) 实现
java 事件监听 Frame ide System