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. NOS服务监控实践

    本文来自网易云社区 作者:王健 一.  背景 此处所说的服务监控程序,是通过模拟用户的请求,对一个系统的服务质量进行监控的程序.服务监控程序的主要目的是,从用户的角度出发,通过发送端到端的请求,确认系 ...

  2. jQuery find()方法 eq()方法

    find() 使用: 返回 <ul> 后代中所有的 <span> 元素: $(document).ready(function(){$("ul").find ...

  3. top 常用命令

    参考文档: http://www.cnblogs.com/allen8807/archive/2010/11/10/1874001.html [root@linux ~]# top [-d] | to ...

  4. django2使用xadmin打造适合国人的后台管理系统(1)

    python火了之后,学习python的人也越来越多了,python做web开发的话,flask.django是比较火的框架了,django是一个比较大的框架,也是一个快速开发利器.但是,django ...

  5. python 常用模块大全

    1.getpass 模块  一般用于获取用户输入的密码 import getpass pwd = getpass.getpass('input your pass') print(pwd) print ...

  6. POJ-2251-Dungeon Master(3D迷宫,BFS)

    Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 48111   Accepted: 18149 ...

  7. c++11 perfect forwarding

    完美转发是c++11 引入右值引用之后,在template 中的延伸. 顾名思义,完美转发是将参数不改变属性的条件下,转发给下一个函数. 因为普通函数的参数一旦具名,始终都是lvalue. 如果把rv ...

  8. UltraFast设计法实践(1) -- 初始设计检查

    目录 1. report_failfast 1.1 命令使用 1.2 优化 1.3.总结 2.report_timing_summary 3. report_methodology 4. 总结 5.遗 ...

  9. document.referrer和history.go(-1)退回上一页区别

    javascript:location=document.referrer;和javascript:history.go(-1);区别: 返回上一页,在PC端我们可以使用:history.go(-1) ...

  10. 在循环中使用continue语句

    continue;//表示继续,当遇到continue语句时,则结束当次循环继续执行下一次循环  例子: class For09{ public static void main(String[ ]a ...