本文目录一览:

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数据想办法