在 React 框架中集成纯前端报表设计器

创建 React 应用

创建 React 应用的最简单的方法是使用 创建 React App, 如使用npx 包运行工具:

npm init react-app arjs-react-designer-app
或使用yarn命令创建:

yarn create react-app arjs-react-designer-app
创建 React应用更多可参考文档 官方文档

安装 ActivereportsJS

报表设计器相关的文件会包含在@grapecity/activereports npm 包中。 安装当前版本,运行以下命令:

npm install @grapecity/activereports-react @grapecity/activereports
也可以使用 yarn命令:

yarn add @grapecity/activereports-react @grapecity/activereports

导入 ActiveReportsJS 样式

在 src\App.css 文件夹中导入以设计器需要的样式文件.

@import "@grapecity/activereports/styles/ar-js-ui.css";
@import "@grapecity/activereports/styles/ar-js-designer.css";

designer-host {

width: 100%;
height: 100vh;
}

将 ActiveReportsJS报表添加到应用程序

ActiveReportsJS 使用 JSON格式和rdlx-json扩展用于报表模板文件。在应用程序的public文件夹下,创建名为report.rdlx-json的新文件,并在该文件中插入以下JSON内容。

{
"Name": "Report",
"Body": {

"ReportItems": [
  {
    "Type": "textbox",
    "Name": "TextBox1",
    "Value": "Hello, ActiveReportsJS Designer",
    "Style": {
      "FontSize": "18pt"
    },
    "Width": "8.5in",
    "Height": "0.5in"
  }
]

}
}

添加 React 报表设计器

打开 src\App.js 文件修改代码:

import React from "react";
import "./App.css";
import { Designer } from "@grapecity/activereports-react";

function App() {
return (

<div id="designer-host">
  <Designer report={{ id: "report.rdlx-json", displayName: "my report" }} />
</div>

);
}

export default App;

添加设计器宿主元素

在src 文件夹中添加 DesignerHost.js (或如果您使用的是 typescript DesignerHost.ts) 文件。

添加需要的 import 包DesignerHost.js(ts)

import React from "react";
import { Designer as ReportDesigner } from "@grapecity/activereports/reportdesigner";
import "@grapecity/activereports/styles/ar-js-ui.css";
import "@grapecity/activereports/styles/ar-js-designer.css";
添加以下函数来初始化设计器,改函数是用于接收 宿主元素的选择器:

const initDesigner = (designerHostSelector) => {
new ReportDesigner(designerHostSelector);
};
添加功能模块 DesignerHost.js(ts)

export const DesignerHost = () => {
React.useEffect(() => initDesigner("#designer-host"), []);
return <div id="designer-host"></div>;
};
该组件调用了 initDesigner 函数,一旦组件完成渲染会,将设计器添加到#designer-host 元素。

在 index.css 文件为 designer-host 元素添加样式文件。

designer-host {

margin: 0 auto;
width: 100%;
height: 100vh;
}

在应用中添加设计器组件

打开App.js(ts)文件使用以下代码替换默认代码:

import React from "react";
import "./App.css";
import { DesignerHost } from "./DesignerHost";

function App() {
return <DesignerHost />;
}

export default App;
运行并测试应用
使用npm start 或 yarn start 命令运行应用,可能会存在错误:“fail with the fatal error that the JavaScript heap is out of memory”,打开package.json文件替换start脚本:

react-scripts --max_old_space_size=4096 start

重新运行 npm start 或 yarn start 命令。

研究报表已经7年有余,略懂一二。期望能够成为报表专家,为大家能够提供报表咨询服务。

14 声望
4 粉丝
0 条评论
推荐阅读
纯JS集成报表系列教程7-样式自定义
ActivereportsJS是纯前端的报表控件,可以跟任何web项目项目进行集成,集成的时候就会存在样式主题UI不一致的情况,这时候就需要通过调整CSS或者其他方式实现样式统一。ActivereportsJS提供一个主题编辑器的能力...

LanLan_Guo阅读 852

JavaScript有用的代码片段和trick
平时工作过程中可以用到的实用代码集棉。判断对象否为空 {代码...} 浮点数取整 {代码...} 注意:前三种方法只适用于32个位整数,对于负数的处理上和Math.floor是不同的。 {代码...} 生成6位数字验证码 {代码...} ...

jenemy49阅读 7.3k评论 12

再也不学AJAX了!(二)使用AJAX ① XMLHttpRequest
「再也不学 AJAX 了」是一个以 AJAX 为主题的系列文章,希望读者通过阅读本系列文章,能够对 AJAX 技术有更加深入的认识和理解,从此能够再也不用专门学习 AJAX。本篇文章为该系列的第二篇,最近更新于 2023 年 1...

libinfs42阅读 7k评论 12

封面图
CSS 绘制一只思否猫
欢迎关注我的公众号:前端侦探练习 CSS 有一个比较有趣的方式,就是发挥想象,绘制各式各样的图案,比如来绘制一只思否猫?思否猫,SegmentFault 思否的吉祥物,是一只独一无二、特立独行、热爱自由的(&gt;^ω^&lt...

XboxYan48阅读 3.3k评论 14

封面图
「多图预警」完美实现一个@功能
一天产品大大向 boss 汇报完研发成果和产品业绩产出,若有所思的走出来,劲直向我走过来,嘴角微微上扬。产品大大:boss 对我们的研发成果挺满意的,balabala...(内心 OS:不听,讲重点)产品大大:咱们的客服 I...

wuwhs32阅读 3.5k评论 5

封面图
还在用 JS 做节流吗?CSS 也可以防止按钮重复点击
举个例子:一个保存按钮,为了避免重复提交或者服务器考虑,往往需要对点击行为做一定的限制,比如只允许每300ms提交一次,这时候我想大部分同学都会到网上直接拷贝一段throttle函数,或者直接引用lodash工具库

XboxYan35阅读 2.7k评论 2

封面图
CSS transition 小技巧!如何保留 hover 的状态?
欢迎关注我的公众号:前端侦探通常情况下,hover 是无法保存状态的。鼠标移入触发额外样式,一旦移出就还原了 {代码...} 这就意味着,如果需要保留hover的状态,可能就不得不借助JS了,比如下面是某某书院的首页...

XboxYan30阅读 4k评论 2

封面图

研究报表已经7年有余,略懂一二。期望能够成为报表专家,为大家能够提供报表咨询服务。

14 声望
4 粉丝
宣传栏