easyui导出当前datagrid数据(含表头)
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数据(含表头)的更多相关文章
- easyui导出当前datagrid数据(Word)
JS代码可参考http://www.cnblogs.com/mu1516633121/p/7753423.html 同样是winform架构下应用到Aspose.Words来读写Word文档 其中Se ...
- easyUI + servlet 展示datagrid数据列表
1:在jsp页面添加所用easyUI的js和css 2.前台代码示例: <table id="dgObj" style="width: 100%;height:90 ...
- EasyUI datagrid数据表格的函数getData返回来的是什么
EasyUI datagrid数据表格的函数getData返回来的是什么? 他返回来的是这么一个对象: Object { rows=[10], total=15} 其中rows就是每一行的数据,是这些 ...
- Easyui datagrid 数据表格 表格列头右键菜单选择展示列 JS
Easyui ,数据表格加载出来以后,在表格头右键,会有显示筛选的功能: 如图: 然后可以取消勾选,就变成下面这个样子: 功能的实现是通过重写了easyui 的 $.fn.datagrid.defau ...
- 数据网格和树-EasyUI Datagrid 数据网格、EasyUI Propertygrid 属性网格、EasyUI Tree 树、EasyUI Treegrid 树形网格
EasyUI Datagrid 数据网格 扩展自 $.fn.panel.defaults.通过 $.fn.datagrid.defaults 重写默认的 defaults. 数据网格(datagrid ...
- easyUI导出数据
easyUI导出数据模式 后台: //导出数据 public function index_doExport() { $search['diqu']=$_POST['diqu']; $search[' ...
- 扩充 jQuery EasyUI Datagrid 数据行鼠标悬停/离开事件(onMouseOver/onMouseOut)
客户需求: jQuery EasyUI Datagrid 用户列表鼠标悬停/离开数据行时显示人员头像(onMouseOver/onMouseOut) 如图所示,Datagrid 鼠标悬停/离开数据行时 ...
- 第二百二十二节,jQuery EasyUI,DataGrid(数据表格)组件
jQuery EasyUI,DataGrid(数据表格)组件 学习要点: 1.加载方式 2.分页功能 本节课重点了解 EasyUI 中 DataGrid(数据表格)组件的使用方法,这个组件依赖于 Pa ...
- EasyUI:datagrid数据汇总
EasyUI:datagrid数据汇总 js代码: var total=0;//全局变量 $(function(){ $('#tablebudgetdata').datagrid({ title:' ...
随机推荐
- SSH密钥登陆
参考: SSH公钥登录原理 比如git可以生成公钥,然后用有权限的账户把他加到仓库上,以后就可以通过公钥登陆了.不需要像https那样需要有账号,但是权限管理就不细了. 有时候如果仓库上添加了多个公钥 ...
- Ubuntu64 apache2+lvs+Keepalived
安装 apache2, vim, keepalived 和 ipvsadm 打开 vim /etc/keepalived/keepalived.conf 点击 i, 进入编辑状态, 输入: ! Con ...
- .CHM文件使用问题
1.查看时内容为空---解除锁定 解决方案:选中xx.CHM,右键点击属性,常规选项卡中点击“解除锁定”.OK了 2.内容显示乱码---修改浏览器编码 IE中的查看 > 编码 > 自动选择 ...
- freemarker模板跟java代码放在一起
在配置 freemarkerConfig时加上 <property name="templateLoaderPath" value="classpath:hello ...
- Objective-C语法基础:面向对象编程特点的总结
1.类的声明与实现 Objective-C类的声明要写在@interface 与 @end之间,实现要写在@implementation 与 @end之间 2.类的-方法和+方法 类的-方法即类的实例 ...
- Orleans MultiClient 多个Silo复合客户端
目录 介绍 使用 简单例子 配置 注入到 DI 容器 添加多个 Client 全局 Orleans 服务配置 介绍 Orleans.MultiClient 是一个 Orleans 复合客户端,只需要简 ...
- MVC软件设计模式
Model(模型):负责数据维护 View(视图):负责向用户呈现数据 Control(控制):负责模型和视图之间的交互 应用:Struts就是基于MVC模式的架构
- Review notes
- excel2010冻结行列
https://jingyan.baidu.com/article/a24b33cd56f6bd19ff002b7c.html
- tomcat在bin下的startup.bat下启动报错
测试环境是否安装配置好. 如果环境配置好.报错如下:或者是730013 -----------解决问题:是因为tomcat端口被占用.查看是否启动两个tomcat