kendo ui Excel导出

博客提供了一个简书的参考链接https://www.jianshu.com/p/fbcaa51d9c0c ,但未明确链接具体内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入代码片
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<title>Kendo UI Web</title>
		<link href="css/kendo.common.min.css" rel="stylesheet" />
		<link href="css/kendo.default.min.css" rel="stylesheet" />
		<link href="css/kendo.default.mobile.min.css" rel="stylesheet"/>
		<link href="css/kendo.common-material.min.css" rel="stylesheet" />
		<link href="css/kendo.material.min.css" rel="stylesheet"/>
		<link href="css/kendo.material.mobile.min.css" rel="stylesheet"/>
		<script src="js/jquery.min.js"></script>
		<script src="js/kendo.mobile.min.js"></script>
		<script src="js/kendo.web.min.js"></script>
		<script src="js/kendo.all.min.js"></script>
		<script src="js/jszip.min.js"></script>
	</head>

	<body>
		<div id="view">
			<button data-bind="click: show">导出到Excel</button>
		</div>
<div id="grid" data-toolbar="['create', 'save']"></div>
		<script>
			/* 本地数据源 */
			var movies = [{
							title: "Star Wars: A New Hope",
							year: 1977
						}, {
							title: "Star Wars: The Empire Strikes Back",
							year: 1980
						}, {
							title: "Star Wars: Return of the Jedi",
							year: 1983
						}, {
							title: "Star Wars: Return of the Jedi",
							year: 1983
						}, {
							title: "Star Wars: Return of the Jedi",
							year: 1983
						}, {
							title: "Star Wars: Return of the Jedi",
							year: 1983
						}, {
							title: "Star Wars: Return of the Jedi",
							year: 1983
						}, {
							title: "Star Wars: Return of the Jedi",
							year: 1983
						}, {
							title: "Star Wars: Return of the Jedi",
							year: 19888
						}];
						
						/* 远程数据源 */
						 var localDataSource = new kendo.data.DataSource({
							transport: {
								read:{
									 url: "json/customers.json",
									dataType: "json",
								},
								update: {
									url: "https://demos.telerik.com/kendo-ui/service/products/update",
									dataType: "jsonp"
								},
								create: {
									url: "https://demos.telerik.com/kendo-ui/service/products/create",
									dataType: "jsonp"
								},
							}
						
						});
						console.log("=="+localDataSource);
			
						
						
						$("#grid").kendoGrid({
							//toolbar: ["excel"],
							excel: {
								fileName: "导出测试.xls",
								proxyURL: "https://demos.telerik.com/kendo-ui/service/export",
								filterable: true
							},
					
							dataSource: localDataSource,
							resizable: true,
							scrollable: true,
							navigatable: false,
							rownumber: true,
							selectable: 'multiple,rowbox',
					 	//	groupable: true,
							sortable: true, 
							pageable: {
								pageSizes: [2, 10, 20, 50],
								refresh: true,
								pageSizes: true,
								buttonCount: 5,
								messages: {
									display: "显示 {0}-{1} 共 {2} 项",
									empty: "没有数据",
									page: "页",
									of: "/ {0}",
									itemsPerPage: "条每页",
									first: "第一页",
									previous: "前一页",
									next: "下一页",
									last: "最后一页",
									refresh: "刷新"
								}
							},
							columns: [
								{   /* template: "<div class='customer-name'> <input typr='text' value='#: Country#'></input> #: Country#</div>", */
								field: "Country",
								title: "First Name",
								template: "<div class='customer-name'> <input type='text' value='#: Country#'></input> #: Country#</div>",
								
								editor: function (container, options) {
										var required = false;
								$('<input/>')
									.attr("name", options.field)
									.attr("required", required)
									.attr("pattern", '[A-Za-z]')
									.appendTo(container)
									.kendoMaskedTextBox({
										change: function(){
											boxNumberChange(1, 1);
										}
									});
							}
					
								
								},
								{
									field: "CompanyName",
									title: "Last Name"
								}
							], editable: true  /* 是否可编辑*/
						}).data("kendoGrid");
						
		
						
					

		</script>
		
		<script>
			var kk = kendo.observable({
				show:function(){
					
					var grid = $("#grid").data("kendoGrid");
					grid.saveAsExcel();
				},
				
			});
			kendo.bind($("#view"),kk);
		</script>
		
		
	</body>
</html>

https://www.jianshu.com/p/fbcaa51d9c0c别的参考

Kendo UI框架提供了强大的Excel导出功能,通过Grid的saveAsExcel能方便地导出Grid中的数据,而且格式美观大方,使用起来也非常方便。但是在实际使用中不是很理想,主要有以下两个问题: 1. 导出的列数据是原始值 Kendo UI默认导出的是该列的value值,及查出来的值,有时候我们会用template渲染一下导出的列,比如将“Y”显示成“是”,把“N”显示成“否”。而Kendo UI导出的却是Y/N这种只有程序员看得懂的数据库标识,显然不是我们需要的,这种情况非常常见。 2. 不能灵活控制可导出的列 Kendo UIExcel导出主要看两点,一是该列(column)是field字段,而不是自定义的name;二是该列不是隐藏的(hidden:true)。这样我们无法灵活导出我们需要的列。 为了解决上面两个问题,我查看了Kendo UI的源代码,提取并改进了源代码。主要更改点及使用方法请看下面源代码。主要针对以上两点做了更改,只需要在grid定义columns时加上isExport或exportTemplate即可: 在导出数据,先看该列有没有自定义exportTemplate(),没有则看Kendo UI自带的template(),再没有才会导出查出来的值。 判断是否导出该列不再看hidden属性,而是看列的isExport属性,如果为false则不导出,其它情况一律导出该列。 经过这两个更改,基本可以应对所有业务场景,可以方便快捷地开发了! 但要注意,Kendo UI自带的导出功能无法应用于导出大量数据,似乎是浏览器的jvm溢出了,建议超过5万条的数据导出还是老老实实写后台导出功能吧。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值