前一段时间一直在做报表,所以肯定会用到Excel的操作,但是在网上查阅资料有关JS操作excel较少,有的话,也都是老生常谈或很零碎的一些东西。
本人是在实际项目中摸索出,JS读写Excel(模板)数据,包括怎么用JS把图片插入Excel中。
首先,添加一个公用的模板地址JS,如下:
AddZDaddress.js
复制代码 代码如下:
///////////////////////////////////////////////////////////////////////////////////////////////////
////DocName:信任站点地址添加--AddZDaddress.js
////Author:lify
////Company:Wavenet
////Date:2009-11-04
////EditDate:2010-03-11
////MainContent:Findings,Ajax And So On;
//////////////////////////////////////////////////////////////////////////////////////////////////
var BelieveAddress='172.18.1.25/psc1';////配置地址配置程序时需要的配置地址
////**********************************Excel 导入到WEB界面模板地址集合*******************************************//
//////////////////////////飞行检测excel模板地址配置/////////////////////////////////////////////////////////////
var template_path_FxjcExcelDatasIntoSqlDatas = "http://%22+believeaddress+%22/NewReports/xls_template/飞行检测城镇污水厂进出水主要污染物浓度.xls";
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////***********************************************************************************************************//
////*********************************Excel 录入模板导入地址集合**********************************************//
//////////////////////////月报导入excel地址配置//////////////////////////////////
var template_path_month = "http://%22+believeaddress+%22/NewReports/xls_template/上海市污水处理企业生产运行表.xls";
/////////////////////////////////////////////////////////////////////////////////
//////////////////////////年报导入excel地址配置//////////////////////////////////
var template_path_year = "http://%22+believeaddress+%22/NewReports/xls_template/上海市污水处理设施信息表.xls";
////*********************************************************************************************************//
//图片地址
var pic_path="http://%22+believeaddress+%22/NewReports/";
/////////////////////////////////////////////////////////////////////////////////
再次,怎么样把页面数据读取到Excel中JS,如下:
YearReportLuRu.jsYearReportLuRu.js
复制代码 代码如下:
////DocName:污水处理设施信息表(年报)-录入报表--YearReportLuRu.js
////Author:lify
////Company:Wavenet
////Date:2009-08-14
////EditDate:2009-08-14
////MainContent:Findings,Ajax And So On;
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////添加正则表达式类/////////////////////////////////////////////////////////////
document.write("<script language=\"javascript\" type=\"text/javascript\" src=\"js/RegularExpression.js\"><\/script>");
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function AutomateExcel3()
{
//alert(pic_path+document.getElementById("ImgUrl").value);//测试
var xls = new ActiveXObject("Excel.Application");
xls.Visible = true;
var newBook = xls.Workbooks.Open(template_path_year);//这里的Add方法里的参数是模板的路径
var oSheet=newBook.ActiveSheet;
////////////////////////////////////////////写入数据到模板中////////////////////////////////////////////////////////////
///////////////法人单位名称/////////////////////////////////////////////////////////////////////////////////////////////
oSheet.Cells(2,3).value = Trim(PT.rows[0].cells[1].innerText);
///////////////法人单位代码以及代表姓名/////////////////////////////////////////////////////////////////////////////////////////////////
oSheet.Cells(2,9).value = Trim(PT.rows[0].cells[3].innerText);
oSheet.Cells(2,13).value = Trim(PT.rows[0].cells[5].innerText);
//////////////进出口三张表/////////////////////////////////////////////////////////////////////////////////////////
oSheet.Cells(3,2).value=Trim(PT.rows[1].cells[1].innerText);
oSheet.Cells(3,6).value=Trim(PT.rows[1].cells[3].innerText);
oSheet.Cells(3,8).value=Trim(PT.rows[1].cells[5].innerText);
oSheet.Cells(3,10).value=Trim(PT.rows[1].cells[7].innerText);
oSheet.Cells(3,13).value=Trim(PT.rows[1].cells[9].innerText);
oSheet.Cells(4,2).value=Trim(PT.rows[2].cells[1].innerText);
oSheet.Cells(4,4).value=Trim(PT.rows[2].cells[3].innerText);
oSheet.Cells(4,6).value=Trim(PT.rows[2].cells[5].innerText);
oSheet.Cells(4,8).value=Trim(PT.rows[2].cells[7].innerText);
oSheet.Cells(4,10).value=Trim(PT.rows[2].cells[9].innerText);
oSheet.Cells(4,12).value=Trim(PT.rows[2].cells[11].innerText);
oSheet.Cells(4,14).value=Trim(PT.rows[2].cells[13].innerText);
oSheet.Cells(5,2).value=Trim(PT.rows[3].cells[1].innerText);
oSheet.Cells(5,5).value=Trim(PT.rows[3].cells[3].innerText);
oSheet.Cells(5,8).value=Trim(PT.rows[3].cells[5].innerText);
oSheet.Cells(5,10).value=Trim(PT.rows[3].cells[7].innerText);
oSheet.Cells(5,12).value=Trim(PT.rows[3].cells[9].innerText);
oSheet.Cells(5,14).value=Trim(PT.rows[3].cells[11].innerText);
//////////////年运行简况///////////////////////
oSheet.Cells(6,4).value = Trim(PT.rows[4].cells[3].innerText);
oSheet.Cells(6,6).value = Trim(PT.rows[4].cells[5].innerText);
oSheet.Cells(6,8).value = Trim(PT.rows[4].cells[7].innerText);
oSheet.Cells(6,10).value = Trim(PT.rows[4].cells[9].innerText);
oSheet.Cells(6,12).value = Trim(PT.rows[4].cells[11].innerText);
oSheet.Cells(6,14).value = Trim(PT.rows[4].cells[13].innerText);
oSheet.Cells(7,4).value = Trim(PT.rows[5].cells[2].innerText);
oSheet.Cells(7,6).value = Trim(PT.rows[5].cells[4].innerText);
oSheet.Cells(7,8).value = Trim(PT.rows[5].cells[6].innerText);
oSheet.Cells(7,10).value = Trim(PT.rows[5].cells[8].innerText);
oSheet.Cells(7,12).value = Trim(PT.rows[5].cells[10].innerText);
oSheet.Cells(7,14).value = Trim(PT.rows[5].cells[12].innerText);
//////////////年处理水量///////////////////////
oSheet.Cells(8,2).value = Trim(PT.rows[6].cells[1].innerText);
oSheet.Cells(8,5).value = Trim(PT.rows[6].cells[3].innerText);
oSheet.Cells(8,8).value = Trim(PT.rows[6].cells[5].innerText);
oSheet.Cells(8,11).value = Trim(PT.rows[6].cells[7].innerText);
oSheet.Cells(8,14).value = Trim(PT.rows[6].cells[9].innerText);
//////////////污水厂工艺概况///////////////////////
oSheet.Cells(10,3).value = Trim(PT.rows[8].cells[1].innerText);
oSheet.Cells(10,4).value = Trim(PT.rows[8].cells[2].innerText);
oSheet.Cells(10,5).value = Trim(PT.rows[8].cells[3].innerText);
oSheet.Cells(10,7).value = Trim(PT.rows[8].cells[4].innerText);
oSheet.Cells(11,3).value = Trim(PT.rows[9].cells[1].innerText);
oSheet.Cells(11,4).value = Trim(PT.rows[9].cells[2].innerText);
oSheet.Cells(11,5).value = Trim(PT.rows[9].cells[3].innerText);
oSheet.Cells(11,7).value = Trim(PT.rows[9].cells[4].innerText);
oSheet.Cells(12,3).value = Trim(PT.rows[10].cells[1].innerText);
oSheet.Cells(12,4).value = Trim(PT.rows[10].cells[2].innerText);
oSheet.Cells(12,5).value = Trim(PT.rows[10].cells[3].innerText);
oSheet.Cells(12,7).value = Trim(PT.rows[10].cells[4].innerText);
//--------------------------运行费用分析-------------------------------------//
oSheet.Cells(13,3).value = Trim(PT.rows[11].cells[2].innerText);
oSheet.Cells(13,5).value = Trim(PT.rows[11].cells[4].innerText);
oSheet.Cells(13,7).value = Trim(PT.rows[11].cells[6].innerText);
oSheet.Cells(13,9).value = Trim(PT.rows[11].cells[8].innerText);
////////////////////////////////厂外输送泵站示意图////////////////////////////
//copy(document.getElementById("ImgUrl"));
//oSheet.Pictures.Insert(pic_path+document.getElementById("ImgUrl").value);///////.Cells(13,11)
var msoShaoeRectangle = 1;//AddShape(透明度,左,上,宽度,高度)
oSheet.Shapes.AddShape(msoShaoeRectangle, 560, 330, 200, 150).Fill.UserPicture(pic_path+document.getElementById("ImgUrl").value);
//oSheet.Cell(13,11).select();//选中excel的单元格
//oSheet.Pictures.Insert(PT.rows[11].cells[8].getElementById("ImgUrl").src);
//////////////////////////////////////////////////////////////////////////////
oSheet.Cells(14,3).value = Trim(PT.rows[12].cells[1].innerText);
oSheet.Cells(14,5).value = Trim(PT.rows[12].cells[3].innerText);
oSheet.Cells(14,7).value = Trim(PT.rows[12].cells[5].innerText);
oSheet.Cells(14,9).value = Trim(PT.rows[12].cells[7].innerText);
oSheet.Cells(15,3).value = Trim(PT.rows[13].cells[1].innerText);
oSheet.Cells(15,5).value = Trim(PT.rows[13].cells[3].innerText);
oSheet.Cells(15,7).value = Trim(PT.rows[13].cells[5].innerText);
oSheet.Cells(15,9).value = Trim(PT.rows[13].cells[7].innerText);
oSheet.Cells(16,5).value = Trim(PT.rows[14].cells[1].innerText);
oSheet.Cells(16,7).value = Trim(PT.rows[14].cells[3].innerText);
oSheet.Cells(16,9).value = Trim(PT.rows[14].cells[5].innerText);
oSheet.Cells(17,3).value = Trim(PT.rows[15].cells[1].innerText);
oSheet.Cells(17,5).value = Trim(PT.rows[15].cells[3].innerText);
oSheet.Cells(17,7).value = Trim(PT.rows[15].cells[5].innerText);
//---------------------------------------------------------------------------//
//////////////污水厂表下方信息///////////////////////
oSheet.Cells(18,2).value = Trim(RT.rows[0].cells[1].innerText);
oSheet.Cells(18,7).value = Trim(RT.rows[0].cells[3].innerText);
oSheet.Cells(18,11).value = Trim(RT.rows[0].cells[5].innerText);
oSheet.Cells(18,14).value = Trim(RT.rows[0].cells[7].innerText);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
xls.Visible = true;
xls.UserControl = true;
xls = null;
idTmr = window.setInterval("Cleanup();",1);
//xls.quit();
}
function Cleanup()
{
window.clearInterval(idTmr);
CollectGarbage();
}
function copy(tabid){
var oControlRange = document.body.createControlRange();
oControlRange.add(tabid,0);
oControlRange.select();
document.execCommand("Copy");
}
最后,如何读取到Excel模板中数据到页面上共客户编辑数据再保存到数据库中(此步可以用xml发送至后台交互,在此不进一步说明)JS,如下:
Fxjc_ExcelDatasIntoSqlDatas.js
复制代码 代码如下:
////DocName:导入模板数据功能--Fxjc_ExcelDatasIntoSqlDatas.js
////Author:lify
////Company:Wavenet
////Date:2010-03-12
////EditDate:2010-03-12
////MainContent:Findings,Ajax And So On;
//////////////////////////////////////////////////////////////////////////////////////////////////
var excelFileName=""; //本地EXCEL地址
var oWB;
var idTmr="";
function AutomateExcel3()
{
//删除PT表的除前2行的所有行
DeleteTablePT();
//alert(pic_path+document.getElementById("ImgUrl").value);//测试
var xls=null;
var newBook;
try{
xls = new ActiveXObject("Excel.Application");
}catch(e){openBg(0);openTS(0);
alert("请您打开ActiveX控件,具体操作:单击IE中的“工具”里“Internet 选项”,单击“安全”中的“自定义级别”中“ActiveX控件和插件”中,请选择第三项为启用即可。详细错误:"+e.message);
return ;
}
if (xls == null){openBg(0);openTS(0);
alert("创建Excel文件失败,可能是您的计算机上没有正确安装Microsoft Office Excel软件或浏览器的安全级别设置过高!");
return;
}
try{
newBook = xls.Workbooks.Open(excelFileName);//这里的Add方法里的参数是模板的路径
}catch(e){openBg(0);openTS(0);
alert("加载的Excel文件路径有错误!详细:"+e.message);
return ;
}
var oSheet=newBook.ActiveSheet;
////////////////////////////////////////////模板写入数据到WEB页面中////////////////////////////////////////////////////////////
var xhnum=0;
//alert("oSheet.Cells(3,18).value="+oSheet.Cells(3,18).value+"|"+(oSheet.Cells(3,5).value=="<30")+"|oSheet.Cells(3,20).value="+oSheet.Cells(3,20).value);
for(var i=3;i<108;i++)
{
if(oSheet.Cells(i,1).value)
{
xhnum++;
var newRow = document.getElementById("PT").insertRow(-1);
var newCell;
newRow.align = "center";
newRow.height = "35px";
for(var j=0;j<28;j++)
{
if(j==4)
{
//什么都不做
}
else if(j<4)
{
newCell = newRow.insertCell(j);
if(j==0) newCell.innerHTML = (xhnum).toString();//序号
else if(j==1)
{
if(!oSheet.Cells(i,1).value)
newCell.innerHTML = " ";
else if(oSheet.Cells(i,1).value=="——"||oSheet.Cells(i,1).value=="--")
newCell.innerHTML = " ";
else
newCell.innerHTML = (oSheet.Cells(i,1).value==""?" ":oSheet.Cells(i,1).value);
}
else if(j==2)
{
if(!oSheet.Cells(i,2).value)
newCell.innerHTML = " ";
else if(oSheet.Cells(i,2).value=="——"||oSheet.Cells(i,2).value=="--")
newCell.innerHTML = " ";
else
newCell.innerHTML = (oSheet.Cells(i,2).value==""?" ":oSheet.Cells(i,2).value);
//newCell.innerHTML = (oSheet.Cells(i,2).value==""?" ":oSheet.Cells(i,2).value);
}
else if(j==3)
{
if(!oSheet.Cells(i,4).value)
newCell.innerHTML = " ";
else if(oSheet.Cells(i,4).value=="——"||oSheet.Cells(i,4).value=="--")
newCell.innerHTML = " ";
else
newCell.innerHTML = (oSheet.Cells(i,4).value==""?" ":oSheet.Cells(i,4).value);
//newCell.innerHTML = (oSheet.Cells(i,4).value==""?" ":oSheet.Cells(i,4).value);
}
else if(j==9)
{
if(!oSheet.Cells(i,j+1).value)
newCell.innerHTML = " ";
else if(oSheet.Cells(i,j+1).value=="<30")
newCell.innerHTML = "30";
else if(oSheet.Cells(i,j+1).value=="——"||oSheet.Cells(i,j+1).value=="--")
newCell.innerHTML = " ";
else
newCell.innerHTML = (oSheet.Cells(i,j+1).value==""?" ":oSheet.Cells(i,j+1).value);
}
else
{
if(!oSheet.Cells(i,j+1).value)
newCell.innerHTML = " ";
else if(oSheet.Cells(i,j+1).value=="<30")
newCell.innerHTML = "30";
else if(oSheet.Cells(i,j+1).value=="<DL")
newCell.innerHTML = " ";
else if(oSheet.Cells(i,j+1).value=="——"||oSheet.Cells(i,j+1).value=="--")
newCell.innerHTML = " ";
else
newCell.innerHTML = (oSheet.Cells(i,j+1).value==""?" ":oSheet.Cells(i,j+1).value);
}
}
else
{
newCell = newRow.insertCell(j-1);//少一个就可以了,少样品编号插入
if(j==0) newCell.innerHTML = (xhnum).toString();//序号
else if(j==1)
{
if(!oSheet.Cells(i,1).value)
newCell.innerHTML = " ";
else if(oSheet.Cells(i,1).value=="——"||oSheet.Cells(i,1).value=="--")
newCell.innerHTML = " ";
else
newCell.innerHTML = (oSheet.Cells(i,1).value==""?" ":oSheet.Cells(i,1).value);
}
else if(j==2)
{
if(!oSheet.Cells(i,2).value)
newCell.innerHTML = " ";
else if(oSheet.Cells(i,2).value=="——"||oSheet.Cells(i,2).value=="--")
newCell.innerHTML = " ";
else
newCell.innerHTML = (oSheet.Cells(i,2).value==""?" ":oSheet.Cells(i,2).value);
//newCell.innerHTML = (oSheet.Cells(i,2).value==""?" ":oSheet.Cells(i,2).value);
}
else if(j==3)
{
if(!oSheet.Cells(i,4).value)
newCell.innerHTML = " ";
else if(oSheet.Cells(i,4).value=="——"||oSheet.Cells(i,4).value=="--")
newCell.innerHTML = " ";
else
newCell.innerHTML = (oSheet.Cells(i,4).value==""?" ":oSheet.Cells(i,4).value);
//newCell.innerHTML = (oSheet.Cells(i,4).value==""?" ":oSheet.Cells(i,4).value);
}
else if(j==9)
{
if(!oSheet.Cells(i,j+1).value)
newCell.innerHTML = " ";
else if(oSheet.Cells(i,j+1).value=="<30")
newCell.innerHTML = "30";
else if(oSheet.Cells(i,j+1).value=="——"||oSheet.Cells(i,j+1).value=="--")
newCell.innerHTML = " ";
else
newCell.innerHTML = (oSheet.Cells(i,j+1).value==""?" ":oSheet.Cells(i,j+1).value);
}
else
{
if(!oSheet.Cells(i,j+1).value)
newCell.innerHTML = " ";
else if(oSheet.Cells(i,j+1).value=="<30")
newCell.innerHTML = "30";
else if(oSheet.Cells(i,j+1).value=="<DL")
newCell.innerHTML = " ";
else if(oSheet.Cells(i,j+1).value=="——"||oSheet.Cells(i,j+1).value=="--")
newCell.innerHTML = " ";
else
newCell.innerHTML = (oSheet.Cells(i,j+1).value==""?" ":oSheet.Cells(i,j+1).value);
}
}
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
newBook.Close();
newBook=null;
xls = null;
openBg(0);openTS(0);
///////////////////////////////开启编辑和保存按钮功能///////////////////////////////////
OnOrOffBtn(1);
////////////////////////////////////////////////////////////////////////////////////////
idTmr = window.setInterval("Cleanup();",1);
////////////////////////////////表格数字和字符转化//////////////////////////////////////
TableIntoDatas();////表格数字和字符转化
////////////////////////////////////////////////////////////////////////////////////////
}
其实做报表很痛苦,但是从中也能经历不少。很高兴以此文章让那些报表高手前来指导和拍砖。谢谢了!
以上为针对excel模板总结的一些方法,欢迎各位前来拍砖!也欢迎大家来交流交流
相关推荐
### JavaScript操作Word和Excel的实现代码 #### 一、JavaScript操作Word文档的实现方法 根据提供的部分代码,我们可以深入分析并总结出如何使用JavaScript来操作Word文档。 ##### 1. 创建Word文档 在JavaScript...
1. **Excel读取与写入** Apache POI 提供了HSSF(Horizontally Stored Spreadsheet Format)和XSSF(XML Spreadsheet Format)两个组件,分别用于处理老版本的.BIFF8 Excel格式(如 .xls 文件)和新版本的OOXML ...
在JavaScript中,可以使用如SheetJS(又名xlsx)这样的库,它提供了读取、写入和操作Excel文件的能力。SheetJS支持多种文件格式,包括XLS、XLSX、CSV等,且兼容性良好,满足了描述中提到的“支持各主流浏览器IE8+、...
`XLSX`是一个强大的JavaScript库,它能够读取、写入多种Excel文件格式,包括`.xls`和`.xlsx`。这个库不仅支持静态数据的写入,还允许动态添加数据,这在描述中被特别提到。 动态添加数据是指在生成Excel文件的过程...
- **文件操作**:读取、写入和管理文件系统的技巧。 - **命令行接口(CLI)**:如果这个工具提供了命令行界面,那么需要了解如何编写和使用CLI命令。 - **自动化脚本**:可能包含批处理脚本,用于批量处理多个Excel...
“layui-Excel.rar”中可能包含对Excel数据的读取和写入功能。在PHP环境中,可以使用PHPExcel或Spout等库来处理Excel文件。这些库支持读取Excel的多种格式,如XLS、XLSX,并能将数据解析为数组,方便进一步操作。...
安装npm i js-excel-template 特征根据Excel模板生成Excel (对于nodejs)读取excel文件作为模板(适用于nodejs)写入Excel文件(用于nodejs)到Buffer以供下载(用于浏览器端js)以ArrayBuffer为模板,来自HTTP下载...
MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 3. **...
例如,ASP脚本可以使用像是Apache POI这样的库来操作Excel文件,将数据逐行或逐列写入模板。 5. **文件导出**:一旦数据被填充到模板中,应用将生成一个新的XLS文件并提供给用户下载。这个过程可能涉及到HTTP响应头...
- JavaScript库如`xlsx`或`js-xlsx`可以读取和写入Excel文件,它们支持BLOB对象和URL.createObjectURL()方法,使得在浏览器中预览和下载成为可能。 4. 文件上传: - HTML5的`<input type="file">`元素可以用于...
本主题将围绕“excel模板数据导出”这一核心,结合Spring Boot和Spring MVC框架,深入探讨如何实现这一功能。 首先,我们要理解Excel模板的含义。Excel模板通常是指预先设计好的工作簿,包含了固定格式、样式和可能...
xlsx 是一个纯粹的 JavaScript 库,可以帮助读取、解析和写入 Excel 文件。file-saver 是一个轻量级的 JavaScript 库,可以帮助将文件保存到本地。我们可以使用以下命令安装这些依赖项: npm install xlsx file-...
这里以`xlsx`为例,它是一个广泛使用的JavaScript库,支持读取和写入多种表格格式,包括Excel(.xlsx)和CSV。通过npm安装: ```bash npm install xlsx --save ``` 接下来,创建一个Vue组件`ViExcelReader.vue`,...
在JavaScript(JS)环境中处理Excel文件,特别是在网页端进行数据的读取、写入和图片插入,是一项常见的需求。JS-XLS是一个JavaScript库,它允许开发者在浏览器端操作Excel文件,而无需借助服务器端的技术支持。这个...
Aspose.Cells提供了丰富的API,能够帮助程序员实现对Excel文件的读取、写入、格式化、计算公式以及图表操作等多种功能。 首先,我们需要了解Aspose.Cells的基本用法。它允许开发者通过代码生成Excel工作簿、工作表...
- 利用HTML5的FileReader API和JavaScript库(如SheetJS的js-xlsx)在前端解析Excel文件并展示在网页上,但这种方式通常只适用于小规模的数据,因为大文件可能会导致性能问题。 - 将数据转换为CSV格式,因为CSV是更...
"excel导出用js.zip"这个压缩包文件很可能包含了一个JavaScript库或者示例代码,用于帮助开发者实现从Web应用程序导出数据到Excel的功能。Vue.js是这个标签所关联的技术,它是一个流行的渐进式JavaScript框架,用于...
Apache POI是一个流行的开源库,专门用于读取和写入Microsoft Office格式的文件,包括Excel(.xlsx和.xls)。在Java中使用POI可以实现对Excel电子表格的强大控制,比如创建新的工作簿、修改现有数据、公式计算、样式...