easyui datagrid导出excel
【第十四篇】easyui datagrid导出excel
<a class="btn btn-app" onclick="exportExcel()"><i class="fa fa-edit"></i>导出Excel</a>
贴下面的代码之前,我想说一下
我的数据是主外键关系,有多张表关联,所以在做数据的时候,发现很多问题,读取的时候,它会自动读取所有的数据。
当然这不能满足我导出之后的要求,我只需要导出我要的字段即可,所以我进行了数据处理。

//导出Excel
function exportExcel() {
var rows = $("#saleGrid").datagrid("getRows"); for (var i = 0; i < rows.length; i++) { //进行数据处理
if (isArray(rows[i].OrganizedId)) {
rows[i].OrganizedId = rows[i].OrganizedId[0];
}
if (isArray(rows[i].CustomerId)) {
rows[i].CustomerId = rows[i].CustomerId[0];
}
if (rows[i].AdvanceDate != null) {
var unix = rows[i].AdvanceDate.replace("/Date(", "").replace(")/", "");
var un = unix.substring(0, 10);
var newDate = new Date();
newDate.setTime(un * 1000); rows[i].AdvanceDate = newDate.toLocaleString();
}
if (rows[i].OrderDate != null) {
var unix = rows[i].OrderDate.replace("/Date(", "").replace(")/", "");
var un = unix.substring(0, 10);
var newDate = new Date();
newDate.setTime(un * 1000); rows[i].OrderDate = newDate.toLocaleString();
}
if (rows[i].RetainageDate != null) {
var unix = rows[i].RetainageDate.replace("/Date(", "").replace(")/", "");
var un = unix.substring(0, 10);
var newDate = new Date();
newDate.setTime(un * 1000); rows[i].RetainageDate = newDate.toLocaleString();
} //移除不要的字段
delete rows[i].SaleAtts;
delete rows[i].SaleOrderId;
delete rows[i].SaleOrderItems;
delete rows[i].SaleStatus;
delete rows[i].UserName;
delete rows[i].Customer;
delete rows[i].AddDate; }
var bodyData = JSON.stringify(rows); //转成json字符串 //替换中文标题
var a = bodyData.replace(/SaleOrderNo/g, "订单编号").replace(/OrderType/g, "订单类型").replace(/FromWhere/g, "订单来源")
.replace(/OrganizedId/g, "机构").replace(/SaleUser/g, "销售员").replace(/SaleTc/g, "销售提成").replace(/OrderDate/g, '订单日期')
.replace(/ContractNo/g, "合同编号").replace(/Amount/g, "总额").replace(/Advance/g, "首付款").replace(/AdvanceDate/g, "首付款日期")
.replace(/PayMethod/g, "支付方式").replace(/Retainage/g, "尾款").replace(/RetainageDate/g, "尾款日期").replace(/InlayPrice/g, "镶嵌款")
.replace(/CustManager/g, "客户经理").replace(/EquityNo/g, "认股书编号").replace(/LogisticsTotal/g, "物流费用")
.replace(/Remarks/g, "备注").replace(/CompletedStatus/g, "状态").replace(/CustomerId/g, "终端客户"); var postData = {
data: a
}; $.ajax({
type: "POST",
url: "ExportExcel",
data: postData,
success: function (data) {
if (data == "1") {
layer.msg("操作成功,文件在桌面!", {
icon: 6,
time: 2000,
});
} else if (data == "-1") {
layer.msg("操作失败!", { icon: 2 });
}
}
});
}


/// <summary>
/// 导出Excel
/// </summary>
/// <returns></returns>
public ActionResult ExportExcel()
{
string json = Request.Params["data"];
try
{
DataTable dt = ExcelHelper.JsonToDataTable(json);
string pathDestop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
ExcelHelper.GridToExcelByNPOI(dt, pathDestop + "\\" + "销售订单-" + DateTime.Now.ToString("yyyy-MM-dd") + "导出" + ".xls");
return Content("1");
}
catch (Exception)
{
return Content("-1");
}
}

效果图

导出之后

帮助类贴下面

/// <summary>
/// 将json转换为DataTable
/// </summary>
/// <param name="strJson">得到的json</param>
/// <returns></returns>
public static DataTable JsonToDataTable(string strJson)
{
//转换json格式
strJson = strJson.Replace(",\"", "*\"").Replace("\":", "\"#").ToString();
//取出表名
var rg = new Regex(@"(?<={)[^:]+(?=:\[)", RegexOptions.IgnoreCase);
string strName = rg.Match(strJson).Value;
DataTable tb = null;
//去除表名
strJson = strJson.Substring(strJson.IndexOf("[") + 1);
strJson = strJson.Substring(0, strJson.IndexOf("]")); //获取数据
rg = new Regex(@"(?<={)[^}]+(?=})");
MatchCollection mc = rg.Matches(strJson);
for (int i = 0; i < mc.Count; i++)
{
string strRow = mc[i].Value;
string[] strRows = strRow.Split('*'); //创建表
if (tb == null)
{
tb = new DataTable();
tb.TableName = strName;
foreach (string str in strRows)
{
var dc = new DataColumn();
string[] strCell = str.Split('#'); if (strCell[0].Substring(0, 1) == "\"")
{
int a = strCell[0].Length;
dc.ColumnName = strCell[0].Substring(1, a - 2);
}
else
{
dc.ColumnName = strCell[0];
}
tb.Columns.Add(dc);
}
tb.AcceptChanges();
} //增加内容
DataRow dr = tb.NewRow();
for (int r = 0; r < strRows.Length; r++)
{
try
{
string a = strRows[r].Split('#')[1].Trim();
if (a.Equals("null"))
{
dr[r] = "";
}
else
{
dr[r] = strRows[r].Split('#')[1].Trim().Replace(",", ",").Replace(":", ":").Replace("\"", "");
}
}
catch (Exception e)
{ throw e;
}
}
tb.Rows.Add(dr);
tb.AcceptChanges();
} try
{
if (tb != null)
{
return tb;
}
else
{
throw new Exception("解析错误");
}
}
catch (Exception e)
{ throw e;
}
}

---------------------------------------------------------------------------------------------------------
转载请记得说明作者和出处哦-.-
作者:KingDuDu
原文出处:http://www.cnblogs.com/kingdudu/p/4863980.html
easyui datagrid导出excel的更多相关文章
- Jquery easyui datagrid 导出Excel
From:http://www.cnblogs.com/weiqt/articles/4022399.html datagrid的扩展方法,用于将当前的数据生成excel需要的内容. 1 <sc ...
- 【第十四篇】easyui datagrid导出excel
<a class="btn btn-app" onclick="exportExcel()"><i class="fa fa-edi ...
- MVC项目中怎样用JS导出EasyUI DataGrid为Excel
在做一中考评项目的时候,遇到了这么一个需求.就是把评教后得到的老师的成绩导出为Excel.事实上需求非常普通.实现起来有些复杂.由于老师考评不但有固定的考核项,还有额外加分项.于是我们就抽出来了一个表 ...
- .NET DataGrid 导出Excel 无分页
#region 导出Excel // protected void BtnExcelClick(object sender, EventArgs e) { ToExcel(); } public vo ...
- asp.net (jquery easy-ui datagrid)通用Excel文件导出(NPOI)
http://www.cnblogs.com/datacool/archive/2013/03/12/easy-ui_datagrid_export_excel_asp_net.html
- EasyUI datagrildview导出excel报表
$.extend($.fn.datagrid.methods, { toExcel: function(jq, filename){ return jq.each(function(){ var ur ...
- DataGrid导出excel
DAL://产品信息导出——LPH public DataTable ExportRelease(string type) { string sql = "SELECT [ProductID ...
- WPF DataGrid 导出Excel
#region Excel导出 private void btnExportExcel_Click(object sender, RoutedEventArgs e) { Export(this.dg ...
- easyui datagrid to excel
$.extend($.fn.datagrid.methods, { toExcel: function(jq, filename){ return jq.each(function(){ var ur ...
随机推荐
- 使用spring过程中遇到的问题
1.java.lang.SecurityException: sealing violation: package javax.servlet is sealed java.lang.Security ...
- Yii2文件上传
首先在app\controllers下建立TestController.php,内容为如下代码: <?php namespace app\controllers; use Yii; use yi ...
- ubuntu linux 使用常见问题
Q:gedit不支持windows下的中文显示 A:http://wiki.ubuntu.org.cn/Gedit%E4%B8%AD%E6%96%87%E4%B9%B1%E7%A0%81 Q:bash ...
- 直播未来属于RTMP还是HTTP?
直播未来属于RTMP还是HTTP? HTTP 传视频比 RTMP 实现起来简单?HTTP 延迟太高? 答:直播通讯未来是属于html5的. 1,协议使用份额 如今国内90%的面向大众的直播平台都是采用 ...
- 手动导出Excel方法
private void dgJiBingZhenDuanBind() { Response.Clear(); Response.Charset = "GB2312"; Res ...
- maven的仓库、生命周期与插件
一.仓库 统一存储所有Maven项目共享的构建的位置就是仓库. 仓库分为本地仓库和远程仓库.远程仓库又分为中央仓库(中央仓库是Maven核心自带的远程仓库),伺服(另一种特殊的远程仓库,为节省宽带和时 ...
- git123
一:安装git和配置 1.下载 Git for windows,双击开始安装,一路采取默认选项,一路next,即可安装完毕.为了在你的电脑和github之间建立安全连接,需要SSH keys,所以你需 ...
- Struts2文件上传
1 在Struts2中上传文件需要 commons-fileupload-1.2.1.jar.commons-io-1.3.2.jar 这两个包. 2 确认页面form表单上的提交方式为POST, ...
- Asp.net_Webservice返回json
[WebMethod] public List<PictureManager> LoadPictureOne() { dataDataContext context = new dataD ...
- SqlServer_事务
事务处理是在数据处理时经常遇到的问题,经常用到的方法有以下三种总结整理如下:方法1:直接写入到sql 中在存储过程中使用 BEGIN TRANS, COMMIT TRANS, ROLLBACK TRA ...