JS 导出EXCEL
2011-06-23 16:33
671 查看
因为公司的程序需要导出Excel,而且页面展示数据用的是 Html table 所以必需用 JS 导出 EXCEL,
调用EXCEL打开,但不自动保存。
经过测式,IE6,IE7,IE8 都好用,测式Excel版本:2000,2003,2007
导出代码如下:
<script type="text/javascript">
//开始行StartRow,开始列StartCol,结束行EndRow,结束列EndCol,特殊转换列NumCol
function TabToExcel(TableID,StartRow,StartCol,EndRow,EndCol,NumCol)
{
var Table= document.getElementById(TableID); //激活当前sheet
var AXE= new ActiveXObject("Excel.Application"); //创建AX对象excel
var AWB= AXE.Workbooks.Add(); //获取workbook对象
var ASheet = AWB.ActiveSheet; //复制TextRange中内容
try
{
//检查开始行,开始列,结束行,结束列
if (StartRow=="undefined" || StartRow <0)
{
StartRow = 0;
}
if (StartCol=="undefined" || StartCol <0)
{
StartCol = 0;
}
if (EndRow=="undefined" || EndRow <= 0)
{
EndRow = Table.rows.length;
}
if (EndRow>Table.rows.length)
{
EndRow = Table.rows.length;
}
if (EndCol == "undefined" || EndCol <=0)
{
EndCol = Table.rows[StartRow].cells.length;
}
if (EndCol>Table.rows[StartRow].cells.length)
{
EndCol = Table.rows[StartRow].cells.length;
}
//行列循环写入Excel
var ExStartRow = 1
for (var i = StartRow; i< EndRow; i++)
{
var ExStartCol = 1;
for (var j = StartCol ; j< EndCol; j++)
{
ASheet.cells(ExStartRow,ExStartCol).Value = Table.rows[i].cells[j].innerText;//文本内容
ASheet.Cells(ExStartRow,ExStartCol).Font.ColorIndex = 1;//字体颜色(黑色)
ASheet.Cells(ExStartRow,ExStartCol).Font.Size = 10;//字号(10号)
ASheet.Cells(ExStartRow,ExStartCol).Font.Name="宋体";// 字体(宋体)
//这个地方是我程序中的列为数值型13位的,所以要转一下类型,否则会出现 科学记数
if (j==NumCol && i>0)
{
ASheet.Cells(ExStartRow,ExStartCol).NumberFormat="0";
}
ExStartCol = ExStartCol+1;
}
ExStartRow = ExStartRow+1;
}
//除了上面的那个特殊列,所有的列转成文本型。s
for (var j = StartCol+1; j< EndCol+1; j++)
{
if (j!=NumCol-StartCol+1)
{
ASheet.Columns(j).NumberFormatLocal="@";
}
}
AXE.Visible = true; //设置excel可见属性
}
catch(er)
{
ASheet.Application.Quit();
}
}
<.script>
调用EXCEL打开,但不自动保存。
经过测式,IE6,IE7,IE8 都好用,测式Excel版本:2000,2003,2007
导出代码如下:
<script type="text/javascript">
//开始行StartRow,开始列StartCol,结束行EndRow,结束列EndCol,特殊转换列NumCol
function TabToExcel(TableID,StartRow,StartCol,EndRow,EndCol,NumCol)
{
var Table= document.getElementById(TableID); //激活当前sheet
var AXE= new ActiveXObject("Excel.Application"); //创建AX对象excel
var AWB= AXE.Workbooks.Add(); //获取workbook对象
var ASheet = AWB.ActiveSheet; //复制TextRange中内容
try
{
//检查开始行,开始列,结束行,结束列
if (StartRow=="undefined" || StartRow <0)
{
StartRow = 0;
}
if (StartCol=="undefined" || StartCol <0)
{
StartCol = 0;
}
if (EndRow=="undefined" || EndRow <= 0)
{
EndRow = Table.rows.length;
}
if (EndRow>Table.rows.length)
{
EndRow = Table.rows.length;
}
if (EndCol == "undefined" || EndCol <=0)
{
EndCol = Table.rows[StartRow].cells.length;
}
if (EndCol>Table.rows[StartRow].cells.length)
{
EndCol = Table.rows[StartRow].cells.length;
}
//行列循环写入Excel
var ExStartRow = 1
for (var i = StartRow; i< EndRow; i++)
{
var ExStartCol = 1;
for (var j = StartCol ; j< EndCol; j++)
{
ASheet.cells(ExStartRow,ExStartCol).Value = Table.rows[i].cells[j].innerText;//文本内容
ASheet.Cells(ExStartRow,ExStartCol).Font.ColorIndex = 1;//字体颜色(黑色)
ASheet.Cells(ExStartRow,ExStartCol).Font.Size = 10;//字号(10号)
ASheet.Cells(ExStartRow,ExStartCol).Font.Name="宋体";// 字体(宋体)
//这个地方是我程序中的列为数值型13位的,所以要转一下类型,否则会出现 科学记数
if (j==NumCol && i>0)
{
ASheet.Cells(ExStartRow,ExStartCol).NumberFormat="0";
}
ExStartCol = ExStartCol+1;
}
ExStartRow = ExStartRow+1;
}
//除了上面的那个特殊列,所有的列转成文本型。s
for (var j = StartCol+1; j< EndCol+1; j++)
{
if (j!=NumCol-StartCol+1)
{
ASheet.Columns(j).NumberFormatLocal="@";
}
}
AXE.Visible = true; //设置excel可见属性
}
catch(er)
{
ASheet.Application.Quit();
}
}
<.script>
相关文章推荐
- 纯前端利用 js-xlsx 实现 Excel 文件导入导出功能示例
- js导入导出excel(实例代码)
- JS导出gridview到excel
- jquery.fileDownload.js插件导出excel 推荐
- JS兼容浏览器的导出Excel(CSV)文件的方法
- js导出EXCEL js导出EXCEL
- js页面上的excel导出
- js导出excel文件的简洁方法(推荐)
- ExtJS 给GridToExcel.js 添加分组GridPanel导出功能
- JS(十四)导出excel
- JS导出excel--2
- Js导出Excel
- 通过tableExport.js插件来实现导出Excel/Pdf/txt/json等
- 纯JS导出文件为excel格式-----1
- 纯js 解决页面table导出excel
- js把数据导出成excel的中文乱码问题解决
- js导出到excel的3种方法
- js导出Excel
- js 导出到excel
- js导出成excel