SpreadJS 生成报表
空了再写个完整的demo吧
//报表控件 输入参数待定
function SpreadObj(response) { var spread = null; //数据列表
var dataArray = [
["位置", '至上期末位移值(mm)', '本期位移(mm)','至本期末位移(mm)', '最大位移量(mm)', '位移速率(mm/月)', '预警值(mm)', '控制值(mm)'],
]; //数据列表信息 端点坐标
var dataListInfo = {
x: 0,//顶点坐标(左上角) x
y: 4,//顶点坐标(左上角) y
rows: 5,//行数
cols: 7//列数
}; //基本信息
var baseInfo = {
reportName: '',
reportNum: '',
bridgeName: '',
monitorUnit: '',
monitorDate: ''
}; //加载控件
function loadSpread() {
InitBaseInfo(); spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), {
sheetCount: 1
});
initSpread(spread);//初始化
//bindEvent(spread);//加载按钮事件
switchRowColumn(spread);
}
loadSpread(); //
this.ExportExcel = function (fileName) {
var excelIo = new GC.Spread.Excel.IO();
excelIo.save(spread.toJSON(), function (blob) {
saveAs(blob, fileName + '.xlsx');
}, function (e) {
console.error(e);//err
}, {
//password: '123'//设置密码
});
}; //初始化基础数据
function InitBaseInfo() {
baseInfo.reportName = response.reportName;
baseInfo.reportNum = response.reportnumber;
baseInfo.bridgeName = response.bridgeName;
baseInfo.monitorUnit = response.monitorUnit;
baseInfo.monitorDate = response.monitorDate; for (var i = 0; i < response.ListData.length; i++) {
var item = response.ListData[i];
dataArray.push(item);
}
dataListInfo.cols = dataArray[0].length;
dataListInfo.rows = dataArray.length; console.log(dataListInfo);
} //跟按钮绑定事件
function bindEvent(spread) {
//切换行和列
document.getElementById("btn1").onclick = function () {
switchRowColumn(spread);
}; //打印
document.getElementById("btn2").onclick = function () {
spread.print();//参数为索引
//spread.print(sheetIndex?);
}; //导出
document.getElementById("btn3").onclick = function () {
var excelIo = new GC.Spread.Excel.IO();
//instance.save(json, successCallBack, errorCallBack, options);
console.log(JSON.stringify(spread.toJSON()));
excelIo.save(spread.toJSON(), function (blob) {
saveAs(blob, 'excel1.xlsx');
}, function (e) {
console.error(e);//err
}, {
//password: '123'//设置密码
});
};
} //初始化 工作簿
function initSpread(spread) { //设置工作表名称
var sheet1 = spread.sheets[0];
sheet1.name("Common Chart"); //定义图表类型
var chartType = [{
type: GC.Spread.Sheets.Charts.ChartType.line,
desc: "line",
}, {
type: GC.Spread.Sheets.Charts.ChartType.lineStacked,
desc: "lineStacked",
}, {
type: GC.Spread.Sheets.Charts.ChartType.lineStacked100,
desc: "lineStacked100",
}, {
type: GC.Spread.Sheets.Charts.ChartType.lineMarkers,
desc: "lineMarkers",
}, {
type: GC.Spread.Sheets.Charts.ChartType.lineMarkersStacked,
desc: "lineMarkersStacked",
}, {
type: GC.Spread.Sheets.Charts.ChartType.lineMarkersStacked100,
desc: "lineMarkersStacked100",
}]; spread.suspendPaint();
//初始化 工作表
initSheet(sheet1,chartType[3].desc); //添加图表
initChart(sheet1,chartType[3].type);
spread.options.tabStripRatio = 0.8;
spread.resumePaint(); } //初始化 工作表
function initSheet(sheet) {
sheet.suspendPaint();//挂起渲染
sheet.setArray(dataListInfo.y, dataListInfo.x, dataArray);//参数: y x data
sheet.resumePaint();//继续渲染 //var activeSheet = spread.getActiveSheet();//获取当前激活的工作表
var activeSheet = sheet; //value = instance.getCell(row, col, sheetArea);
//cell.hAlign(GC.Spread.Sheets.HorizontalAlign.center);
activeSheet.getCell(0, 0).value(baseInfo.reportName).font("25pt 宋体").hAlign(GC.Spread.Sheets.HorizontalAlign.center);
activeSheet.getCell(1, 0).value("报表编号(" + baseInfo.reportNum + ")").font("15pt 宋体").hAlign(GC.Spread.Sheets.HorizontalAlign.center);
activeSheet.getCell(2, 0).value("桥梁名称:" + baseInfo.bridgeName);
activeSheet.getCell(2, 4).value("监测单位:" + baseInfo.monitorUnit);
activeSheet.getCell(3, 0).value("监测时间:" + baseInfo.monitorDate); //行号自适应
activeSheet.getCell(dataListInfo.rows + 20, 0).value("说明").hAlign(GC.Spread.Sheets.HorizontalAlign.center);;
activeSheet.getCell(dataListInfo.rows + 21, 0).value("分析与建议").hAlign(GC.Spread.Sheets.HorizontalAlign.center);;
activeSheet.getCell(dataListInfo.rows + 22, 0).value("监控员: 分析员: 审核员:"); //单元格高宽自适应
//activeSheet.autoFitColumn(0);//列宽自适应 参数:columnIndex
activeSheet.autoFitRow(0);//行高自适应 参数:rowIndex
activeSheet.autoFitRow(1); //单元格居中
//value = instance.getRange(row, col, rowCount, colCount, sheetArea);
activeSheet.getRange(dataListInfo.y, dataListInfo.x, dataListInfo.rows, dataListInfo.cols, GC.Spread.Sheets.SheetArea.viewport).hAlign(GC.Spread.Sheets.HorizontalAlign.center); //列宽自适应
for (var i = dataListInfo.x + 1; i < dataListInfo.cols; i++) {
activeSheet.autoFitColumn(i);
} //单元格合并
//value = instance.addSpan(row, column, rowCount, colCount, sheetArea);
var baseColumns = 8;//合并列最大宽度
activeSheet.addSpan(0, 0, 1, baseColumns, GC.Spread.Sheets.SheetArea.viewport);
activeSheet.addSpan(1, 0, 1, baseColumns, GC.Spread.Sheets.SheetArea.viewport);
activeSheet.addSpan(2, 0, 1, baseColumns / 2, GC.Spread.Sheets.SheetArea.viewport);
activeSheet.addSpan(2, baseColumns / 2, 1, baseColumns / 2, GC.Spread.Sheets.SheetArea.viewport);
activeSheet.addSpan(3, 0, 1, baseColumns, GC.Spread.Sheets.SheetArea.viewport);
//行号自适应
activeSheet.addSpan(dataListInfo.rows + 20, 0, 1, 2, GC.Spread.Sheets.SheetArea.viewport);
activeSheet.addSpan(dataListInfo.rows + 20, 2, 1, baseColumns - 2, GC.Spread.Sheets.SheetArea.viewport);
activeSheet.addSpan(dataListInfo.rows + 21, 0, 1, 2, GC.Spread.Sheets.SheetArea.viewport);
activeSheet.addSpan(dataListInfo.rows + 21, 2, 1, baseColumns - 2, GC.Spread.Sheets.SheetArea.viewport);
activeSheet.addSpan(dataListInfo.rows + 22, 0, 1, baseColumns, GC.Spread.Sheets.SheetArea.viewport); //activeSheet.getCell(0, 0).borderBottom(new GC.Spread.Sheets.LineBorder("", GC.Spread.Sheets.LineStyle.medium));
//activeSheet.getRange(-1, 3, -1, 1, GC.Spread.Sheets.SheetArea.viewport).borderBottom(new GC.Spread.Sheets.LineBorder("blue", GC.Spread.Sheets.LineStyle.mediumDashed)); //隐藏网格线
//activeSheet.options.gridline = {
// showVerticalGridline: false,
// showHorizontalGridline: false
//}; ////数据列表不跟着列标题走,解决:写入空单元格写入空数据,就不会有那样的问题
//for (var i = 0; i < 4; i++) {
// //行
// activeSheet.getCell(i, 0).value("");
//}
//for (var i = 0; i < dataArray.length; i++) {
// //行
// for (var j = 0; j < dataArray[0].length; j++) {
// //列
// activeSheet.getCell(i + 4, j).value(dataArray[i][j]);
// }
//}
} //初始化 图表
function initChart(sheet) {
//add common chart
//GC.Spread.Sheets.Charts.Chart(sheet, name, chartType, x, y, width, height, dataRange, dataOrientation);
//chartType:图表类型
// 位置:GC.Spread.Sheets.Charts Namespace : ChartType Enumeration:
// 类型:line,lineMarkers,columnClustered,pie
//dataOrientation:数据区域
//sheet.charts.add('Chart1', GC.Spread.Sheets.Charts.ChartType.lineMarkers, 0, 100, 800, 300, "A11:H14"); //根据列表自动调整图表的位置
//一个单元格默认为20的高度
var y = dataListInfo.rows * 20 + 6 * 20;
var width = dataListInfo.cols * 110; var chart = sheet.charts.add('chart1', GC.Spread.Sheets.Charts.ChartType.lineMarkers, 0, y, width, 300, getArea()); var title = chart.title();
title.text = "";//图表的名称,缺省时不显示
title.fontSize = 18;
chart.title(title);
} //根据 数据列表 得到 统计图表 的数据区域(dataOrientation)
function getArea() {
//例子
//A1:H4
//10, 0
//A11:H14 var x = dataListInfo.x;
var y = dataListInfo.y;
var character = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "X", "Y", "Z"]; //得到数据列表区域的 两个对角点的坐标
//左上角
var topPos = {
x: 1 + x,
y: 1 + y
};
//右下角
var endPos = {
x: 3 + x,
y: y + dataListInfo.rows
}; var startChar = character[x];//开始字母
var endChar = character[endPos.x - 1];//结束字母 return startChar + topPos.y + ':' + endChar + endPos.y;
} //切换行和列
function switchRowColumn(spread) {
var activeChart = spread.getActiveSheet().charts.all()[0];
if (activeChart) {
var isSwitched = activeChart.switchDataOrientation();
if (!isSwitched) {
alert("'Can't switch row/column");
}
}
} }
SpreadJS 生成报表的更多相关文章
- 使用C#通过调用minitab的COM库自动化生成报表
本文介绍通过C#调用minitab com组建自动化生成报表的方法. 首先需要在minitab中通过手动配置的方式生成报表来得到该报表的命令行,过程如下 选择菜单“编辑器”->“启用命令”启用命 ...
- 使用google chart api生成报表图片
使用google chart api生成报表图片 截图 折线图 饼图 柱状图 实现方法 原理是调用google的报表服务,动态拼接url字符串,得到一张图片,数据和说明文字都是从url中传进去的. ...
- 告别.NET生成报表统计图的烦恼
告别.NET生成报表统计图的烦恼 标签: 报表.netstatistics图形数据库文档 2009-10-09 12:00 635人阅读 评论(0) 收藏 举报 分类: .net程序设计(C#)(2 ...
- 使用Python定时执行一任务,自动登录某web系统,生成报表,然后发送邮件给指定人员
一.项目需求 每周从A系统生成一张Excel报表,发送此报表给指定人员,相关人员依据此报表去完成后续的工作. 项目限制: 1.无法通过EDI系统交互的方式从后台读取数据 2.由于公司网络环境限制,不能 ...
- 使用python获取整月每一天的系统监控数据生成报表
1.安装阿里开源监控工具tsar tsar官方网站 wget -O tsar.zip https://github.com/alibaba/tsar/archive/master.zip --no-c ...
- 使用FastReport报表工具生成报表PDF文档
在我们开发某个系统的时候,客户总会提出一些特定的报表需求,固定的报表格式符合他们的业务处理需要,也贴合他们的工作场景,因此我们尽可能做出符合他们实际需要的报表,这样我们的系统会得到更好的认同感.本篇随 ...
- C# WinfForm 控件之dev报表 XtraReport (八)动态生成报表
功能说明:生成一个报表文件DV1,保存到本地AA.rep,再重新加载这个文件到DV2 1.布局如下图: panel1 上有三个button panel2上有个documentView dv1 pane ...
- jenkins持续集成Allure生成报表+邮件推送
本次基于<jenkins 生成HTML报表,邮件推送>的基础上将生成HTML报表修改为Allure生成报表,可以参考官方文档:https://docs.qameta.io/allure/# ...
- ASP.NET MVC4 + Highcharts生成报表
//后端 public ActionResult TighteningReport(BReportTighteningReportModel model, string rate, string we ...
随机推荐
- Windows环境安装PyQt5
目录 1. 安装Python 2. 安装Pycharm 3. 安装PyQt5 4. 安装PyQt5-tools 5. 可能出现的问题 1. Qt Designer 程序位置 2. Qt Designe ...
- https的原理入门
现在基本上互联网上访问的地址都是使用HTTPS协议了,只有局域网才会使用HTTP协议,因此了解HTTPS十分重要. HTTP存在的问题 上过网的朋友都知道,网络是非常不安全的.尤其是公共场所有很多免费 ...
- Django学习——用户自定义models问题解决
一.问题在Django中使用自定义的model的时候会出现下面的错误 ERRORS: auth.User.groups: (fields.E304) Reverse accessor for 'Use ...
- 浅析libuv源码-node事件轮询解析(2)
上一篇讲了轮询的边角料,这篇进入正题.(竟然真有人看我博客,上两个图给你们整理下思路) 这是轮询总流程图. 下图为本节内容简图. Poll for I/O The loop blocks for I/ ...
- JAVA学习之开发环境配置
JAVA SDK 下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 版 ...
- 分享windows 10 下部署 elasticsearch 和 logstash
最近和es杠上了.以前只听说过es一直没有机会体验一下. 最近有点时间,就着手体验一把.因为是第一次接触es,没有任何基础.入门的第一件是就是用 百度了, [不过建议改名为白度,基本上查不到想要的,一 ...
- javascript 对象的方式解析url地址参数
看到一个知识点,比如说给一个 url参数,让其解析里面的各个参数,以前我都是通过字符串分割来实现的.但是通过这样的方式比较麻烦,而且操作字符串容易出错.今天看到了一个更有效更快速的方式,就是通过对象来 ...
- Windows Server - Tomcat服务器下载、安装、配置环境变量教程
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_40881680/articl ...
- Bootstrap4后台导航栏制作
<!Doctype html> <html lang="zh-cn"> <head> <!-- Required meta tags -- ...
- tengine 基于权重负载均衡的简单配置
环境如下: 资源服务器_1:192.168.10.10 centos 7 tengine 2.3.0 资源服务器_2:192.168.10.129 centos 7 tengine 2.3. ...