空了再写个完整的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 生成报表的更多相关文章

  1. 使用C#通过调用minitab的COM库自动化生成报表

    本文介绍通过C#调用minitab com组建自动化生成报表的方法. 首先需要在minitab中通过手动配置的方式生成报表来得到该报表的命令行,过程如下 选择菜单“编辑器”->“启用命令”启用命 ...

  2. 使用google chart api生成报表图片

    使用google chart api生成报表图片 截图 折线图 饼图 柱状图   实现方法 原理是调用google的报表服务,动态拼接url字符串,得到一张图片,数据和说明文字都是从url中传进去的. ...

  3. 告别.NET生成报表统计图的烦恼

    告别.NET生成报表统计图的烦恼 标签: 报表.netstatistics图形数据库文档 2009-10-09 12:00 635人阅读 评论(0) 收藏 举报  分类: .net程序设计(C#)(2 ...

  4. 使用Python定时执行一任务,自动登录某web系统,生成报表,然后发送邮件给指定人员

    一.项目需求 每周从A系统生成一张Excel报表,发送此报表给指定人员,相关人员依据此报表去完成后续的工作. 项目限制: 1.无法通过EDI系统交互的方式从后台读取数据 2.由于公司网络环境限制,不能 ...

  5. 使用python获取整月每一天的系统监控数据生成报表

    1.安装阿里开源监控工具tsar tsar官方网站 wget -O tsar.zip https://github.com/alibaba/tsar/archive/master.zip --no-c ...

  6. 使用FastReport报表工具生成报表PDF文档

    在我们开发某个系统的时候,客户总会提出一些特定的报表需求,固定的报表格式符合他们的业务处理需要,也贴合他们的工作场景,因此我们尽可能做出符合他们实际需要的报表,这样我们的系统会得到更好的认同感.本篇随 ...

  7. C# WinfForm 控件之dev报表 XtraReport (八)动态生成报表

    功能说明:生成一个报表文件DV1,保存到本地AA.rep,再重新加载这个文件到DV2 1.布局如下图: panel1 上有三个button panel2上有个documentView dv1 pane ...

  8. jenkins持续集成Allure生成报表+邮件推送

    本次基于<jenkins 生成HTML报表,邮件推送>的基础上将生成HTML报表修改为Allure生成报表,可以参考官方文档:https://docs.qameta.io/allure/# ...

  9. ASP.NET MVC4 + Highcharts生成报表

    //后端 public ActionResult TighteningReport(BReportTighteningReportModel model, string rate, string we ...

随机推荐

  1. linux重定向 null和zero

    文件描述符 linux下一切皆文件 文件描述符,是内核为了高效管理已经被打开的文件所创建的索引,用于指向被打开的文件,所有执行I/O操作的系统调用都通过文件描述符; 文件描述符是一个简单的非负整数,用 ...

  2. ant-design自定义FormItem--上传文件组件

    自定义上传组件,只需要在内部的值变化之后调用props中的onChange方法就可以托管在From组件中, 此外为了保证,初始化值发生变化后组件也发生变化,需要检测initialValue 变化,这是 ...

  3. MySQL的统计总数count(*)与count(id)或count(字段)的之间的各自效率性能对比

    执行效果: 1.  count(1) and count(*) 当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了!  从执行计划来看,count(1)和cou ...

  4. windows远程桌面无法拷贝文件的问题与解决方法

    在开发完往windows服务器上部署系统或者给系统打补丁的时候,都会需要远程桌面的双向拷贝文件功能. 但是有些时候却会发现没有办法拷贝文件,原因主要有两个. 01 远程桌面的剪贴板设置 一个是在远程桌 ...

  5. 笔记本CPU性能排行

    截图如下: 1. 图1 2. 图2 3. 4. 5. 6. 7. 8. 谢谢浏览!

  6. windows系统mysql-5.7官方绿色版zip包安装教程

    准备 下载页面:https://dev.mysql.com/downloads/mysql/ 点击 Download 按钮下载zip包到本地,解压(以我本地的解压路径是 D:\db\mysql-5.7 ...

  7. C#通过字符串分割字符串Split

    string[] strArr = str.Split(new[] {"****==="},StringSplitOptions.None); 更多内容关注公众号 洛水梅家

  8. VS.NET(C#)--2.4_aspx默认页面模板代码

    默认模板代码 客户端浏览器将忽视<script>块间任何字符,不在页面输出.通过<%=DataTime.Now.ToString() %>      将服务端代码放中间 < ...

  9. mvc控制器接收ajax传送的数据

    视图层中ajax传数据 $.ajax({ type: "post",//提交方式 data: { complay_arry: complay_arry, site_arry: si ...

  10. javascript(五)表达式

    表达式 (expression) JavaScript中的一个短语, JavaScript解释器会将其计算(evaluate) 出一 个结果.程序中的常量是最简单的一类表达式.变量名也是一种简单的表达 ...