本文目录一览:
- 1、easyui datagrid导出Excel 有什么好的解决方法吗
- 2、jquery easyui datagrid 怎么导出excel
- 3、用easyui怎么实现其datagird导出到Excel
- 4、EasyUI 结合JS导出Excel文件的实现方法
- 5、通过easyui的datagrid得到的列表怎样通过纯js导出为excel
easyui datagrid导出Excel 有什么好的解决方法吗
首先在js中写一个扩展类,主要的功能是把DataGrid中的数据转换成Excel的XML格式
'''将datagrid中的数据转换成Excel的XML格式'''
$.extend($.fn.datagrid.methods, {
getExcelXml: function (jq, param) {
var worksheet = this.createWorksheet(jq, param);
//alert($(jq).datagrid('getColumnFields'));
var totalWidth = 0;
var cfs = $(jq).datagrid('getColumnFields');
for (var i = 0; i cfs.length; i++) {
totalWidth += $(jq).datagrid('getColumnOption', cfs[i]).width;
}
//var totalWidth = this.getColumnModel().getTotalWidth(includeHidden);
return 'xml version="1.0" encoding="utf-8"' +
'ss:Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:o="urn:schemas-microsoft-com:office:office"' +
'o:DocumentPropertieso:Title' + param.title + '/o:Title/o:DocumentProperties' +
'ss:ExcelWorkbook' +
'ss:WindowHeight' + worksheet.height + '/ss:WindowHeight' +
'ss:WindowWidth' + worksheet.width + '/ss:WindowWidth' +
'ss:ProtectStructureFalse/ss:ProtectStructure' +
'ss:ProtectWindowsFalse/ss:ProtectWindows' +
'/ss:ExcelWorkbook' +
'ss:Styles' +
'ss:Style ss:ID="Default"' +
'ss:Alignment ss:Vertical="Top" /' +
'ss:Font ss:FontName="arial" ss:Size="10" /' +
'ss:Borders' +
'ss:Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Top" /' +
'ss:Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Bottom" /' +
'ss:Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Left" /' +
'ss:Border ss:Weight="1" ss:LineStyle="Continuous" ss:Position="Right" /' +
'/ss:Borders' +
'ss:Interior /' +
'ss:NumberFormat /' +
'ss:Protection /' +
'/ss:Style' +
'ss:Style ss:ID="title"' +
'ss:Borders /' +
'ss:Font /' +
'ss:Alignment ss:Vertical="Center" ss:Horizontal="Center" /' +
'ss:NumberFormat ss:Format="@" /' +
'/ss:Style' +
'ss:Style ss:ID="headercell"' +
'ss:Font ss:Bold="1" ss:Size="10" /' +
'ss:Alignment ss:Horizontal="Center" /' +
'ss:Interior ss:Pattern="Solid" /' +
'/ss:Style' +
'ss:Style ss:ID="even"' +
'ss:Interior ss:Pattern="Solid" /' +
'/ss:Style' +
'ss:Style ss:Parent="even" ss:ID="evendate"' +
'ss:NumberFormat ss:Format="yyyy-mm-dd" /' +
'/ss:Style' +
'ss:Style ss:Parent="even" ss:ID="evenint"' +
'ss:NumberFormat ss:Format="0" /' +
'/ss:Style' +
'ss:Style ss:Parent="even" ss:ID="evenfloat"' +
'ss:NumberFormat ss:Format="0.00" /' +
'/ss:Style' +
'ss:Style ss:ID="odd"' +
'ss:Interior ss:Pattern="Solid" /' +
'/ss:Style' +
'ss:Style ss:Parent="odd" ss:ID="odddate"' +
'ss:NumberFormat ss:Format="yyyy-mm-dd" /' +
'/ss:Style' +
'ss:Style ss:Parent="odd" ss:ID="oddint"' +
'ss:NumberFormat ss:Format="0" /' +
'/ss:Style' +
'ss:Style ss:Parent="odd" ss:ID="oddfloat"' +
'ss:NumberFormat ss:Format="0.00" /' +
'/ss:Style' +
'/ss:Styles' +
worksheet.xml +
'/ss:Workbook';
},
'''创建worksheet,将dataGrid的标题放到里面'''
createWorksheet: function (jq, param) {
'''Calculate cell data types and extra class names which affect formatting'''
var cellType = [];
var cellTypeClass = [];
'''var cm = this.getColumnModel();'''
var totalWidthInPixels = 0;
var colXml = '';
var headerXml = '';
var visibleColumnCountReduction = 0;
var cfs = $(jq).datagrid('getColumnFields');
var colCount = cfs.length;
for (var i = 0; i colCount; i++) {
if (cfs[i] != '') {
var w = $(jq).datagrid('getColumnOption', cfs[i]).width;
totalWidthInPixels += w;
if (cfs[i] === "") {
cellType.push("None");
cellTypeClass.push("");
++visibleColumnCountReduction;
}
else {
colXml += 'ss:Column ss:AutoFitWidth="1" ss:Width="130" /';
headerXml += 'ss:Cell ss:StyleID="headercell"' +
'ss:Data ss:Type="String"' + $(jq).datagrid('getColumnOption', cfs[i]).title + '/ss:Data' +
'ss:NamedCell ss:Name="Print_Titles" //ss:Cell';
cellType.push("String");
cellTypeClass.push("");
}
}
}
var visibleColumnCount = cellType.length - visibleColumnCountReduction;
var result = {
height: 9000,
width: Math.floor(totalWidthInPixels * 30) + 50
};
var rows = $(jq).datagrid('getRows');
// Generate worksheet header details.
var t = 'ss:Worksheet ss:Name="' + param.title + '"' +
'ss:Names' +
'ss:NamedRange ss:Name="Print_Titles" ss:RefersTo="=/'' + param.title + '/'!R1:R2" /' +
'/ss:Names' +
'ss:Table x:FullRows="1" x:FullColumns="1"' +
' ss:ExpandedColumnCount="' + (visibleColumnCount + 2) +
'" ss:ExpandedRowCount="' + (rows.length + 2) + '"' +
colXml +
'ss:Row ss:AutoFitHeight="1"' +
headerXml +
'/ss:Row';
//将DataGrid的数据循环加入到Excel中
//Generate the data rows from the data in the Store
//for (var i = 0, it = this.store.data.items, l = it.length; i l; i++) {
for (var i = 0, it = rows, l = it.length; i l; i++) {
t += 'ss:Row';
var cellClass = (i 1) ? 'odd' : 'even';
r = it[i];
var k = 0;
for (var j = 0; j colCount; j++) {
//if ((cm.getDataIndex(j) != '')
if (cfs[j] != '') {
//var v = r[cm.getDataIndex(j)];
var v = r[cfs[j]];
if (cellType[k] !== "None") {
t += 'ss:Cell ss:StyleID="' + cellClass + cellTypeClass[k] + '"ss:Data ss:Type="' + cellType[k] + '"';
if (cellType[k] == 'DateTime') {
t += v.format('Y-m-d');
} else {
t += v;
}
t += '/ss:Data/ss:Cell';
}
k++;
}
}
t += '/ss:Row';
}
result.xml = t + '/ss:Table' +
'x:WorksheetOptions' +
'x:PageSetup' +
'x:Layout x:CenterHorizontal="1" x:Orientation="Landscape" /' +
'x:Footer x:Data="Page P of N" x:Margin="0.5" /' +
'x:PageMargins x:Top="0.5" x:Right="0.5" x:Left="0.5" x:Bottom="0.8" /' +
'/x:PageSetup' +
'x:FitToPage /' +
'x:Print' +
'x:PrintErrorsBlank/x:PrintErrors' +
'x:FitWidth1/x:FitWidth' +
'x:FitHeight32767/x:FitHeight' +
'x:ValidPrinterInfo /' +
'x:VerticalResolution600/x:VerticalResolution' +
'/x:Print' +
'x:Selected /' +
'x:DoNotDisplayGridlines /' +
'x:ProtectObjectsFalse/x:ProtectObjects' +
'x:ProtectScenariosFalse/x:ProtectScenarios' +
'/x:WorksheetOptions' +
'/ss:Worksheet';
//alert(result.xml);
return result;
}
});
然后再新建一个一般处理程序
public void ProcessRequest(HttpContext context) {
'''给要下载的Excel赋一个初始的文件名'''
string fn = DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xls";
'''获取前台传回来的值,应该是一个XML文件的内容''''
string data = context.Request.Form["data"];
'''将相对路径转换为绝对路径,数据,编码方式'''
File.WriteAllText(context.Server.MapPath(fn), data, Encoding.UTF8);'''如果是gb2312的xml申明,第三个编码参数修改为Encoding.GetEncoding(936)'''
context.Response.Write(fn);'''返回文件名提供下载'''
}
jquery easyui datagrid 怎么导出excel
于你这个问题,首先easyui的控件不支持直接导出的方式,也不可能支持,如果一个浏览器可以获得导出(写)的权限,那么你的PC存在极大的安全隐患!对方可以通过浏览器做任何他想做的事情。所以你要导出EXCEL 只能从后台返回来的JSON数据想办法
用easyui怎么实现其datagird导出到Excel
因为excel数据写入涉及到字体,样式等多个方面,所以相对来说要复杂一些,可以参考下以下导出为excel方法代码:
import jxl.*;
import jxl.write.*;
import java.io.*;
import java.io.File.*;
import java.util.*;
public class excel
{
public static void main(String[] args)
{
String targetfile = "c:/out.xls";//输出的excel文件名
String worksheet = "List";//输出的excel文件工作表名
String[] title = {"ID","NAME","DESCRIB"};//excel工作表的标题
WritableWorkbook workbook;
try
{
//创建可写入的Excel工作薄,运行生成的文件在tomcat/bin下
//workbook = Workbook.createWorkbook(new File("output.xls"));
System.out.println("begin");
OutputStream os=new FileOutputStream(targetfile);
workbook=Workbook.createWorkbook(os);
WritableSheet sheet = workbook.createSheet(worksheet, 0); //添加第一个工作表
//WritableSheet sheet1 = workbook.createSheet("MySheet1", 1); //可添加第二个工作
/*
jxl.write.Label label = new jxl.write.Label(0, 2, "A label record"); //put a label in cell A3, Label(column,row)
sheet.addCell(label);
*/
jxl.write.Label label;
for (int i=0; ititle.length; i++)
{
//Label(列号,行号 ,内容 )
label = new jxl.write.Label(i, 0, title[i]); //put the title in row1
sheet.addCell(label);
}
//下列添加的对字体等的设置均调试通过,可作参考用
//添加数字
jxl.write.Number number = new jxl.write.Number(3, 4, 3.14159); //put the number 3.14159 in cell D5
sheet.addCell(number);
//添加带有字型Formatting的对象
jxl.write.WritableFont wf = new jxl.write.WritableFont(WritableFont.TIMES,10,WritableFont.BOLD,true);
jxl.write.WritableCellFormat wcfF = new jxl.write.WritableCellFormat(wf);
jxl.write.Label labelCF = new jxl.write.Label(4,4,"文本",wcfF);
sheet.addCell(labelCF);
//添加带有字体颜色,带背景颜色 Formatting的对象
jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD,false,jxl.format.UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);
jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);
wcfFC.setBackground(jxl.format.Colour.BLUE);
jxl.write.Label labelCFC = new jxl.write.Label(1,5,"带颜色",wcfFC);
sheet.addCell(labelCFC);
//添加带有formatting的Number对象
jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");
jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(nf);
jxl.write.Number labelNF = new jxl.write.Number(1,1,3.1415926,wcfN);
sheet.addCell(labelNF);
//3.添加Boolean对象
jxl.write.Boolean labelB = new jxl.write.Boolean(0,2,false);
sheet.addCell(labelB);
//4.添加DateTime对象
jxl.write.DateTime labelDT = new jxl.write.DateTime(0,3,new java.util.Date());
sheet.addCell(labelDT);
//添加带有formatting的DateFormat对象
jxl.write.DateFormat df = new jxl.write.DateFormat("ddMMyyyyhh:mm:ss");
jxl.write.WritableCellFormat wcfDF = new jxl.write.WritableCellFormat(df);
jxl.write.DateTime labelDTF = new jxl.write.DateTime(1,3,new java.util.Date(),wcfDF);
sheet.addCell(labelDTF);
//和宾单元格
//sheet.mergeCells(int col1,int row1,int col2,int row2);//左上角到右下角
sheet.mergeCells(4,5,8,10);//左上角到右下角
wfc = new jxl.write.WritableFont(WritableFont.ARIAL,40,WritableFont.BOLD,false,jxl.format.UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.GREEN);
jxl.write.WritableCellFormat wchB = new jxl.write.WritableCellFormat(wfc);
wchB.setAlignment(jxl.format.Alignment.CENTRE);
labelCFC = new jxl.write.Label(4,5,"单元合并",wchB);
sheet.addCell(labelCFC); //
//设置边框
jxl.write.WritableCellFormat wcsB = new jxl.write.WritableCellFormat();
wcsB.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THICK);
labelCFC = new jxl.write.Label(0,6,"边框设置",wcsB);
sheet.addCell(labelCFC);
workbook.write();
workbook.close();
}catch(Exception e)
{
e.printStackTrace();
}
System.out.println("end");
Runtime r=Runtime.getRuntime();
Process p=null;
//String cmd[]={"notepad","exec.java"};
String cmd[]={"C://Program Files//Microsoft Office//Office//EXCEL.EXE","out.xls"};
try{
p=r.exec(cmd);
}
catch(Exception e){
System.out.println("error executing: "+cmd[0]);
}
}
}
EasyUI 结合JS导出Excel文件的实现方法
废话俺就少说了,直接进入正题!!单纯的JS能够导出Excel的不多见,一般都需要调用客户端所安装的Office
Excel组件来完成这个工作。这里我主要讲EasyUI内的DataGrid如何结合JS导出Excel文件
一、
导出Excel的核心代码段如下所示
function
Exproter()
{
//获取Datagride的列
var
rows
=
$('#test').datagrid('getRows');
var
oXL
=
new
ActiveXObject("Excel.Application");
//创建AX对象excel
var
oWB
=
oXL.Workbooks.Add();
//获取workbook对象
var
oSheet
=
oWB.ActiveSheet;
//激活当前sheet
for
(var
i
=
0;
i
rows.length;
i++)
{
oSheet.Cells(i
+
1,
1).value
=
rows[i].O_NAME;
}
oXL.Visible
=
true;
//设置excel可见属性
}
二、以上JS方法能够顺利执行的大前提就是
1.机器上Excel已经安装.
2.Internet
选项=安全=Internet
/"对没有标记为安全的ActiveX控件进行初始化和脚本运行,设定为启用/"
//EasyUI
datagrid
动态导出Excel
function
ExporterExcel()
{
//获取Datagride的列
var
rows
=
$('#tt').datagrid('getRows');
var
columns
=
$("#tt").datagrid("options").columns[0];
var
oXL
=
new
ActiveXObject("Excel.Application");
//创建AX对象excel
var
oWB
=
oXL.Workbooks.Add();
//获取workbook对象
var
oSheet
=
oWB.ActiveSheet;
//激活当前sheet
//设置工作薄名称
oSheet.name
=
"导出Excel报表";
//设置表头
for
(var
i
=
0;
i
columns.length;
i++)
{
oSheet.Cells(1,
i+1).value
=
columns[i].title;
}
//设置内容部分
for
(var
i
=
0;
i
rows.length;
i++)
{
//动态获取每一行每一列的数据值
for
(var
j
=
0;
j
columns.length;
j++)
{
oSheet.Cells(i
+
2,
j+1).value
=
rows[i][columns[j].field];
}
}
oXL.Visible
=
true;
//设置excel可见属性
}
以上就是小编为大家带来的EasyUI
结合JS导出Excel文件的实现方法全部内容了,希望大家多多支持脚本之家~
通过easyui的datagrid得到的列表怎样通过纯js导出为excel
对于你这个问题,首先easyui的控件不支持直接导出的方式,也不可能支持,如果一个浏览器可以获得导出(写)的权限,那么你的PC存在极大的安全隐患!对方可以通过浏览器做任何他想做的事情。所以你要导出EXCEL 只能从后台返回来的JSON数据想办法