JS代码

//导出当前DataGrid数据
function doExportCommon() {
var list = getCheckedRowCommon();
var exportList = [];
if (list.length <= 0) {
showMessage("请至少勾选一条数据");
return;
} var titleList = JSON.parse(getGridTitle());
exportList.push(titleList);
for (var i = 0; i < list.length; i++) {
var row = list[i];
var rowStr = "{";
//这里通过字段去匹配相应的行的数据
for (var field in titleList) {
var str = row[field];
if (str) {
while (str.toString().indexOf('\n') > 0) {
str = str.replace('\n', "<br>");  
}
} else { str = ""; }
rowStr += "\"" + field + "\":\"" + str + "\","; //过滤换行符
}
rowStr = rowStr.substr(0, rowStr.length - 1);
rowStr += "}";
exportList.push(JSON.parse(rowStr));
}
var strhtml = JSON.stringify(exportList);
//调用后台导出方法
callbackObj.showExportMsg(strhtml);
} //该方法为自定义勾选框时,根据已勾选的勾选框获取行的数据
//获取勾选行,返回勾选行数据
function getCheckedRowCommon() {
var data = $('#table').datagrid('getRows');
var checkitems=$("#table_div input[name='checkItem']:checkbox:checked");
var rowList = [];
for (var i = 0; i < checkitems.length; i++) {
var rowTr = checkitems[i].parentElement.parentElement.parentElement;
var selectIndex = $(rowTr).attr("datagrid-row-index");
rowList.push(data[selectIndex]);
}
return rowList;
} //这里返回的是字段名称和表头文字的键值对
//根据datagrid显示的表头,获取文字
function getGridTitle() {
var titlename = "{";
var fields = $('#table').datagrid('getColumnFields');
for (var i = 0; i < fields.length; i++) {
var option = $('#table').datagrid('getColumnOption', fields[i]);
if (option.field != "checkItem" && option.hidden != true) { //过滤勾选框和隐藏列
titlename += "\"" + option.field + "\":\"" + option.title + "\",";
}
}
titlename = titlename.substr(0, titlename.length - 1);
titlename += "}";
return titlename;
}

后台导出方法(winform)

这里应用到Aspose.Cells用来读写Excel

public class CallbackObjectForJs
{
public MainForm mainForm; //主页面 public void exportExcel(string data)
{
string saveFileName = "";
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.DefaultExt = "xlsx";
saveDialog.Filter = "Excel文件|*.xlsx";
saveDialog.FileName = DateTime.Now.Ticks.ToString();
saveDialog.ShowDialog();
saveFileName = saveDialog.FileName;
if (saveFileName.IndexOf(":") < ) return; //被点了取消 Workbook wb = new Workbook(FileFormatType.Xlsx);
try
{
Worksheet sheet = wb.Worksheets[];
sheet.Name = "Sheet1";
// 为单元格添加样式
Aspose.Cells.Style style = wb.CreateStyle();
style.HorizontalAlignment = TextAlignmentType.Center; //设置居中
style.IsTextWrapped = true; //设置自动换行
//style.Font.Size = 12;//文字大小
//style.Font.IsBold = true;//粗体 DataTable dt = JsonConvert.DeserializeObject<DataTable>(data);
//遍历DataTable
for (int i = ; i < dt.Rows.Count; i++) //行
{
for (int j = ; j < dt.Columns.Count; j++)
{
string value = dt.Rows[i][j].ToString();
while (value.Contains("<br>"))
{
value = value.Replace("<br>", "\n");
}
sheet.Cells[i, j].PutValue(value);
sheet.Cells[i, j].SetStyle(style);
}
}
//设置宽度、高度自适应
setColumnWithAuto(sheet);
wb.Save(saveFileName, new OoxmlSaveOptions(Aspose.Cells.SaveFormat.Xlsx)); //通过Invoke激活主线程,弹出框置顶。
mainForm.Invoke(new MethodInvoker(delegate
{
MessageBox.Show(mainForm, "导出成功");
}));
}
catch (Exception e)
{
MessageBox.Show(e.Message.ToString());
return;
}
} /// <summary>
/// 设置表页的列宽度自适应
/// </summary>
/// <param name="sheet">worksheet对象</param>
public void setColumnWithAuto(Worksheet sheet)
{
Cells cells = sheet.Cells;
int columnCount = cells.MaxColumn + ; //获取表页的最大列数
int rowCount = cells.MaxRow; //获取表页的最大行数 sheet.AutoFitRows(); //设置行高自适应
for (int col = ; col < columnCount; col++)
{
sheet.AutoFitColumn(col, , rowCount);
}
for (int col = ; col < columnCount; col++)
{
cells.SetColumnWidthPixel(col, cells.GetColumnWidthPixel(col) + );
}
}
}

easyui导出当前datagrid数据(含表头)的更多相关文章

  1. easyui导出当前datagrid数据(Word)

    JS代码可参考http://www.cnblogs.com/mu1516633121/p/7753423.html 同样是winform架构下应用到Aspose.Words来读写Word文档 其中Se ...

  2. easyUI + servlet 展示datagrid数据列表

    1:在jsp页面添加所用easyUI的js和css 2.前台代码示例: <table id="dgObj" style="width: 100%;height:90 ...

  3. EasyUI datagrid数据表格的函数getData返回来的是什么

    EasyUI datagrid数据表格的函数getData返回来的是什么? 他返回来的是这么一个对象: Object { rows=[10], total=15} 其中rows就是每一行的数据,是这些 ...

  4. Easyui datagrid 数据表格 表格列头右键菜单选择展示列 JS

    Easyui ,数据表格加载出来以后,在表格头右键,会有显示筛选的功能: 如图: 然后可以取消勾选,就变成下面这个样子: 功能的实现是通过重写了easyui 的 $.fn.datagrid.defau ...

  5. 数据网格和树-EasyUI Datagrid 数据网格、EasyUI Propertygrid 属性网格、EasyUI Tree 树、EasyUI Treegrid 树形网格

    EasyUI Datagrid 数据网格 扩展自 $.fn.panel.defaults.通过 $.fn.datagrid.defaults 重写默认的 defaults. 数据网格(datagrid ...

  6. easyUI导出数据

    easyUI导出数据模式 后台: //导出数据 public function index_doExport() { $search['diqu']=$_POST['diqu']; $search[' ...

  7. 扩充 jQuery EasyUI Datagrid 数据行鼠标悬停/离开事件(onMouseOver/onMouseOut)

    客户需求: jQuery EasyUI Datagrid 用户列表鼠标悬停/离开数据行时显示人员头像(onMouseOver/onMouseOut) 如图所示,Datagrid 鼠标悬停/离开数据行时 ...

  8. 第二百二十二节,jQuery EasyUI,DataGrid(数据表格)组件

    jQuery EasyUI,DataGrid(数据表格)组件 学习要点: 1.加载方式 2.分页功能 本节课重点了解 EasyUI 中 DataGrid(数据表格)组件的使用方法,这个组件依赖于 Pa ...

  9. EasyUI:datagrid数据汇总

    EasyUI:datagrid数据汇总 js代码: var total=0;//全局变量 $(function(){ $('#tablebudgetdata').datagrid({ title:' ...

随机推荐

  1. Django FileFieldManage

    default_storage >>> from django.core.files.base import ContentFile >>> from django ...

  2. 使用 dlv 调试go 程序

    目录 使用 dlv 调试smartraiden 一 正常启动 smartraiden 二 dlv 调试 三 dlv attach 使用 dlv 调试smartraiden by 白振轩 使用 dlv ...

  3. “全栈2019”Java第五十一章:继承与final关键字详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  4. react学习之路-配制antd-mobile

    经过将近三个月的使用,现在终于在我老大的带领下做完了一个react的项目,感觉还可以,最大的不足就是,对于react中的很多的东西都是掺杂着jq使用来做的,这是最不满意的一点吧,但是开发进度很近,只能 ...

  5. 洛谷P2462 [SDOI2007]游戏(哈希+最长路)

    题面 传送门 题解 我们把字符的出现次数哈希起来,然后把每个点向能在它之后的点连边.那么这显然是一个\(DAG\),直接求最长路就行了 //minamoto #include<bits/stdc ...

  6. sed--行编辑器命令

    2017-11-02 sed:行编辑器,按行处理:默认不做原文件修改,会在sed自身的模式空间中按行读相关的数据并完成编辑,然后显示到屏幕上     一.     基本用法: 1. 语法格式: sed ...

  7. mybatis的CRUD实例(三)

    前面的文章我们已经实现了根据id查询用户信息的功能,下面我们进行其他业务功能的实现. 一.根据用户名模糊查询用户列表 查询使用的sql : select * from user where usern ...

  8. POJ_3264 Balanced Lineup 【线段树 + 区间查询】

    一.题面 POJ3264 二.分析 典型的线段树的题,没有更新只有查询. 查询的时候需要注意的是,在判断区间是完全属于右子树还是左子树时,要根据建树的情况来选择,不然会出错.具体看代码 三.AC代码 ...

  9. BZOJ 3437: 小P的牧场

    传送门 显然考虑 $dp$,设 $f[i]$ 表示前 $i$ 个牧场都被控制的最小代价 那么枚举所有 $j<i$ ,$f[i]=f[j]+val[i][j]+A[i]$ $val[i][j]$ ...

  10. netsh命令操作防火墙

    这里的netsh命令操作防火墙主要是在Windows 7及以上版本,以示例说明: 1.防火墙入方向添加一条规则,规则名字:RDP,协议tcp,动作为允许,端口号3389:简而言之,就是允许其他机器远程 ...