birt hello world(一)

birt的官网能看到现在最新的版本是4.4.2,以后的例子都会使用这个版本。

进入下载页面,可以看到

All-in-One

Framework

    DTP: DataTools Platform,管理数据源驱动程序,以及访问特殊数据源实例的配置。

    EMF:EclipseModeling Framework,用来制作图表的框架。

    GEF:GraphicalEditing Framework,图形编辑框架,是一个通过 BIRT UI 使用的Eclipse 插件。

    WTP: Web Tools Platform

RCP Designer

Latest BIRT Runtime Release Build: 4.4.2

More Downloads->full BIRT 4.4.2 Download Page,在这里可以找到语言包。

下载All-in-One和语言包,把语言包直接覆盖过去就可以使用了。

打开eclipse,就可以开始做birt的开发了。

在runtime的文件里有工程,可以直接在tomcat里运行,

我们工程是使用的MAVEN

需要在pom.xml里添加

<!-- birt -->
<dependency>
<groupId>org.eclipse.birt.runtime</groupId>
<artifactId>org.eclipse.birt.runtime</artifactId>
<version>4.4.2</version>
</dependency>
<dependency>
  <groupId>org.eclipse.birt.view</groupId>
  <artifactId>viewer-servlet</artifactId>
  <version>4.4.0</version>
</dependency>
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-discovery</groupId>
<artifactId>commons-discovery</artifactId>
<version>0.2</version>
</dependency>
<dependency>
<groupId>javax.xml.soap</groupId>
<artifactId>javax.xml.soap-api</artifactId>
<version>1.3.7</version>
</dependency>
<dependency>
    <groupId>axis</groupId>
    <artifactId>axis-jaxrpc</artifactId>
    <version>1.2.1</version>
</dependency>

其中viewer-servlet.jar需要自己导入到maven私服里

mvn install:install-file -Dfile=[location]\viewservlets.jar
    -DgroupId=org.eclipse.birt.view -DartifactId=viewer-servlet -Dversion=4.4.0
    -Dpackaging=jar

如果要本地化的,需要把放Messages_zh_CN.properties文件到org\eclipse\birt\report\resource

Messages_zh_CN.properties文件内容如下:

birt.viewer.title=BIRT \u62a5\u544a\u6d4f\u89c8\u5668

birt.viewer.title.navigation=\u5bfc\u822a

birt.viewer.title.error=\u9519\u8bef

birt.viewer.title.complete=\u5b8c\u6210

birt.viewer.title.message=\u6d88\u606f

birt.viewer.parameter=\u53c2\u6570

birt.viewer.runreport=\u8fd0\u884c\u62a5\u8868

birt.viewer.required=\u9700\u8981\u5e26\u6709 <FONT COLOR="red">*</FONT> \u6807\u8bb0\u7684\u53c2\u6570\u3002

birt.viewer.viewinpdf=\u4ee5 PDF \u67e5\u770b

birt.viewer.maximize=\u9690\u85cf\u62a5\u8868\u53c2\u6570

birt.viewer.restore=\u663e\u793a\u62a5\u8868\u53c2\u6570

birt.viewer.error=\u9519\u8bef\u6d88\u606f

birt.viewer.error.noparameter=\u6b64\u62a5\u8868\u65e0\u53c2\u6570\u3002

birt.viewer.error.parameter.invalid=\u53c2\u6570\u201c{0}\u201d\u65e0\u6548\u3002

birt.viewer.error.noprinter=\u65e0\u6cd5\u627e\u5230\u652f\u6301 PostScript \u683c\u5f0f\u7684\u4efb\u4f55\u53ef\u7528\u6253\u5370\u673a\u3002

birt.viewer.error.unknownerror=\u672a\u77e5\u9519\u8bef\u3002

birt.viewer.error.generatereportfirst=\u5e94\u9996\u5148\u751f\u6210\u62a5\u8868\u6587\u6863\u3002

birt.viewer.error.parameternotallowblank=\u53c2\u6570\u201c{0}\u201d\u4e0d\u80fd\u4e3a\u7a7a\u767d\u3002

birt.viewer.error.parameternotselected=\u8bf7\u4e3a\u53c2\u6570\u201c{0}\u201d\u9009\u62e9\u503c\u3002

birt.viewer.error.noviewingsession=\u89c6\u56fe\u533a\u4e0d\u53ef\u7528\u6216\u8005\u5df2\u7ecf\u8fc7\u671f\u3002

birt.viewer.error.viewingsessionexpired=\u89c6\u56fe\u533a\u5df2\u7ecf\u8fc7\u671f\u3002

birt.viewer.error.viewingsessionlocked=\u89c6\u56fe\u533a\u88ab\u9501\u5b9a\u6240\u4ee5\u65e0\u6cd5\u7ec8\u6b62\u3002

birt.viewer.error.viewingsessionmaxreached=\u5df2\u7ecf\u8fbe\u5230\u4e86\u89c6\u56fe\u533a\u7684\u6700\u5927\u503c\u3002

birt.viewer.message.taskcanceled=\u5f53\u524d\u64cd\u4f5c\u5df2\u53d6\u6d88\u3002

birt.viewer.toolbar.print=\u6253\u5370\u62a5\u8868

birt.viewer.toolbar.printserver=\u5728\u670d\u52a1\u5668\u4e0a\u6253\u5370\u62a5\u8868

birt.viewer.toolbar.toc=\u663e\u793a\u76ee\u5f55

birt.viewer.toolbar.parameter=\u8fd0\u884c\u62a5\u8868

birt.viewer.toolbar.export=\u5bfc\u51fa\u6570\u636e

birt.viewer.toolbar.font=\u66f4\u6539\u5b57\u4f53

birt.viewer.toolbar.enableiv=\u8c03\u7528\u4ea4\u4e92\u5f0f\u67e5\u770b\u5668

birt.viewer.toolbar.exportreport=\u5bfc\u51fa\u62a5\u8868

birt.viewer.navbar.first=\u7b2c\u4e00\u9875

birt.viewer.navbar.previous=\u4e0a\u4e00\u9875

birt.viewer.navbar.next=\u4e0b\u4e00\u9875

birt.viewer.navbar.last=\u6700\u540e\u4e00\u9875

birt.viewer.navbar.goto=\u8f6c\u81f3

birt.viewer.navbar.lable.goto=\u8f6c\u5230\u9875:

birt.viewer.navbar.prompt.one=\u663e\u793a\u9875

birt.viewer.navbar.prompt.two=/

birt.viewer.navbar.error.blankpagenum=\u8bf7\u8f93\u5165\u6709\u6548\u9875\u7801\u3002

birt.viewer.progressbar.prompt=\u6b63\u5728\u5904\u7406\uff0c\u8bf7\u7a0d\u5019 ...

birt.viewer.progressbar.confirmcanceltask=\u60a8\u8981\u53d6\u6d88\u5f53\u524d\u64cd\u4f5c\u5417?

birt.viewer.dialog.cancel=\u53d6\u6d88

birt.viewer.dialog.run=\u8fd0\u884c\u62a5\u8868

birt.viewer.dialog.close=\u5173\u95ed

birt.viewer.dialog.page=\u9875\u9762

birt.viewer.dialog.page.all=\u6240\u6709\u9875

birt.viewer.dialog.page.current=\u5f53\u524d\u9875

birt.viewer.dialog.page.range=\u9875\u9762\uff1a

birt.viewer.dialog.page.range.description=(\u8f93\u5165\u9875\u7801\u548c/\u6216\u9875\u8303\u56f4\u3002\u4f8b\u5982: 1-6 \u6216 1,3,6)

birt.viewer.dialog.page.error.invalidpagerange=\u65e0\u6548\u9875\u8303\u56f4

birt.viewer.dialog.exception.title=\u5f02\u5e38

birt.viewer.dialog.exportReport.title=\u5bfc\u51fa\u62a5\u8868

birt.viewer.dialog.parameter.title=\u53c2\u6570

birt.viewer.dialog.simpleExportData.title=\u5bfc\u51fa\u6570\u636e

birt.viewer.dialog.printReport.title=\u6253\u5370\u62a5\u8868

birt.viewer.dialog.printReportServer.title=\u5728\u670d\u52a1\u5668\u4e0a\u6253\u5370\u62a5\u8868

birt.viewer.dialog.export.format=\u5bfc\u51fa\u683c\u5f0f:

birt.viewer.dialog.export.all=\u5bfc\u51fa\u8be6\u7ec6\u62a5\u8868

birt.viewer.dialog.export.all.detail=\u5c06\u5bfc\u51fa\u6240\u6709\u53ef\u7528\u62a5\u8868\u6570\u636e\uff0c\u4e0d\u8003\u8651<br>\u5f53\u524d\u89c6\u56fe\u7684\u4fee\u6539\u3002

birt.viewer.dialog.export.modified=\u5bfc\u51fa\u5177\u6709\u5f53\u524d\u4fee\u6539\u7684\u62a5\u8868

birt.viewer.dialog.export.modified.detail=\u5c06\u53ea\u5bfc\u51fa\u53ef\u89c1\u6570\u636e\u3002\u5c06\u4e0d\u5bfc\u51fa<BR>\u5df2\u88ab\u7b5b\u9009\u6389\u6216\u9690\u85cf\u7684\u6570\u636e\u3002

birt.viewer.dialog.export.pdf.fittoauto=\u81ea\u52a8

birt.viewer.dialog.export.pdf.fittoactual=\u5b9e\u9645\u5927\u5c0f

birt.viewer.dialog.export.pdf.fittowidth=\u9002\u5408\u9875\u9762\u5bbd\u5ea6

birt.viewer.dialog.export.pdf.fittowhole=\u9002\u5408\u6574\u9875

birt.viewer.dialog.print.format=\u6253\u5370\u683c\u5f0f

birt.viewer.dialog.print.printpreviewalreadyopen=\u6253\u5370\u9884\u89c8\u7a97\u53e3\u5df2\u6253\u5f00\u3002

birt.viewer.dialog.printserver.onserver=\u5728\u670d\u52a1\u5668\u4e0a\u6253\u5370\u8f93\u51fa\u6587\u6863\u6587\u4ef6

birt.viewer.dialog.printserver.printer=\u6253\u5370\u673a:

birt.viewer.dialog.printserver.status=\u72b6\u6001\uff1a

birt.viewer.dialog.printserver.model=\u578b\u53f7:

birt.viewer.dialog.printserver.description=\u63cf\u8ff0\uff1a

birt.viewer.dialog.printserver.status.acceptingjobs=\u6b63\u5728\u63a5\u53d7\u4f5c\u4e1a

birt.viewer.dialog.printserver.status.notacceptingjobs=\u4e0d\u63a5\u53d7\u4efb\u52a1

birt.viewer.dialog.printserver.settings=\u8bf7\u6307\u5b9a\u6253\u5370\u8bbe\u7f6e

birt.viewer.dialog.printserver.settings.copies=\u4efd\u6570:

birt.viewer.dialog.printserver.settings.collate=\u9010\u4efd\u6253\u5370:

birt.viewer.dialog.printserver.settings.mode=\u65b9\u5f0f\uff1a

birt.viewer.dialog.printserver.settings.mode.bw=\u9ed1\u767d

birt.viewer.dialog.printserver.settings.mode.color=\u989c\u8272

birt.viewer.dialog.printserver.settings.duplex=\u53cc\u5de5:

birt.viewer.dialog.printserver.settings.duplex.simplex=\u5355\u5de5

birt.viewer.dialog.printserver.settings.duplex.horizontal=\u6c34\u5e73

birt.viewer.dialog.printserver.settings.duplex.vertical=\u5782\u76f4

birt.viewer.dialog.printserver.settings.pagesize=\u9875\u9762\u5927\u5c0f:

birt.viewer.dialog.printserver.settings.print=\u6253\u5370:

birt.viewer.dialog.printserver.complete=\u5df2\u5c06\u6587\u6863\u6587\u4ef6\u53d1\u9001\u5230\u670d\u52a1\u5668\u4e0a\u9009\u62e9\u7684\u6253\u5370\u673a\u3002

birt.viewer.dialog.printserver.error.noprinter=\u65e0\u6253\u5370\u673a

birt.viewer.dialog.confirmation.title=\u786e\u8ba4

birt.viewer.dialog.exportdata.tab.field=\u6570\u636e\u5b57\u6bb5

birt.viewer.dialog.exportdata.tab.filter=\u7b5b\u9009\u6807\u51c6

birt.viewer.dialog.exportdata.resultsets=\u53ef\u7528\u7ed3\u679c\u96c6

birt.viewer.dialog.exportdata.availablecolumn=\u53ef\u7528\u5217

birt.viewer.dialog.exportdata.selectedcolumn=\u9009\u62e9\u7684\u5217

birt.viewer.dialog.exportdata.extension=\u5bfc\u51fa\u683c\u5f0f:

birt.viewer.dialog.exportdata.encoding=\u8f93\u51fa\u7f16\u7801:

birt.viewer.dialog.exportdata.encoding.other=\u5176\u4ed6

birt.viewer.dialog.exportdata.encoding.comment=(\u5982\u679c\u4e3a\u7a7a\u767d\uff0c\u4f7f\u7528\u672c\u5730\u7f16\u7801)

birt.viewer.dialog.exportdata.addall=\u5168\u90e8\u6dfb\u52a0

birt.viewer.dialog.exportdata.add=\u6dfb\u52a0

birt.viewer.dialog.exportdata.removeall=\u5168\u90e8\u5220\u9664

birt.viewer.dialog.exportdata.remove=\u9664\u53bb

birt.viewer.dialog.exportdata.up=\u5411\u4e0a

birt.viewer.dialog.exportdata.down=\u5411\u4e0b

birt.viewer.dialog.exportdata.separator=\u5206\u9694\u7b26:

birt.viewer.dialog.exportdata.datatype=\u5bfc\u51fa\u5217\u7684\u6570\u636e\u7c7b\u578b

birt.viewer.dialog.exportdata.localeneutral=\u4e0d\u5206\u533a\u57df\u8bbe\u7f6e\u5bfc\u51fa\u5217

birt.viewer.sep.0=\u9017\u53f7 ( , )

birt.viewer.sep.1=\u5206\u53f7 ( ; )

birt.viewer.sep.2=\u5192\u53f7 ( : )

birt.viewer.sep.3=\u5782\u76f4\u7ebf ( | )

birt.viewer.sep.4=\u5236\u8868\u7b26 ( \\t )

birt.viewer.generalException.DOCUMENT_FILE_ERROR=\u6587\u6863\u6587\u4ef6: {0} \u4e0d\u5b58\u5728\u6216\u5305\u542b\u9519\u8bef\u3002

birt.viewer.generalException.DOCUMENT_ACCESS_ERROR=\u65e0\u6cd5\u8bbf\u95ee\u6587\u6863\u6587\u4ef6: {0}\u3002

birt.viewer.generalException.REPORT_FILE_ERROR=\u62a5\u8868\u6587\u4ef6: {0} \u4e0d\u5b58\u5728\u6216\u5305\u542b\u9519\u8bef\u3002

birt.viewer.generalException.REPORT_ACCESS_ERROR=\u65e0\u6cd5\u8bbf\u95ee\u62a5\u8868\u6587\u4ef6: {0}\u3002

birt.viewer.generalException.DOCUMENT_FILE_PROCESSING=\u6b63\u5728\u5904\u7406\u6587\u6863\u6587\u4ef6\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002

birt.viewer.generalException.NO_REPORT_DESIGN=\u6ca1\u6709\u53ef\u7528\u7684\u62a5\u8868\u8bbe\u8ba1\u5bf9\u8c61\u3002

birt.viewer.generalException.MULTIPLE_EXCEPTIONS=\u51fa\u73b0\u591a\u4e2a\u4f8b\u5916\u3002

birt.viewer.reportServiceException.EXTRACT_DATA_NO_DOCUMENT=\u6ca1\u6709\u53ef\u4f9b\u63d0\u53d6\u6570\u636e\u7684\u6587\u6863\u6587\u4ef6\u3002

birt.viewer.reportServiceException.EXTRACT_DATA_NO_RESULT_SET=\u6ca1\u6709\u53ef\u4f9b\u63d0\u53d6\u6570\u636e\u7684\u7ed3\u679c\u96c6\u3002

birt.viewer.reportServiceException.INVALID_TOC=\u65e0\u6548 TOC \u67e5\u8be2\u3002

birt.viewer.reportServiceException.INVALID_PARAMETER=\u65e0\u6548\u53c2\u6570: {0}\uff0c\u56e0\u6b64\u5b83\u672a\u5b9a\u4e49\u3002

birt.viewer.reportServiceException.STARTUP_REPORTENGINE_ERROR=\u5c1d\u8bd5\u542f\u52a8\u62a5\u8868\u5f15\u64ce\u65f6\u51fa\u73b0\u81f4\u547d\u9519\u8bef\u3002

birt.viewer.reportServiceException.INVALID_EXTRACTFORMAT=\u6570\u636e\u63d0\u53d6\u683c\u5f0f\u65e0\u6548\u6216\u672a\u6307\u5b9a\u3002

birt.viewer.reportServiceException.INVALID_EXTRACTEXTENSION=\u65e0\u6548\u7684\u6570\u636e\u63d0\u53d6\u6269\u5c55 ID\u3002

birt.viewer.actionException.NO_REPORT_DOCUMENT=\u62a5\u8868\u6587\u6863\u5b9e\u4f8b\u4e3a\u7a7a\u3002

birt.viewer.actionException.INVALID_BOOKMARK=\u4e66\u7b7e: {0} \u65e0\u6548\u3002\u8bf7\u68c0\u67e5\u5e76\u91cd\u7f6e\u94fe\u63a5\u3002

birt.viewer.actionException.INVALID_PAGE_NUMBER=\u65e0\u6548\u9875\u7801\u7b2c {0} \u9875\uff0c\u5171 {1} \u9875\u3002

birt.viewer.actionException.INVALID_ID_FORMAT=\u65e0\u6548 id \u683c\u5f0f\u3002Id={0}\u3002

birt.viewer.actionException.DOCUMENT_FILE_NO_EXIST=\u4f1a\u8bdd\u8d85\u65f6\u6216\u6ca1\u6709\u53ef\u7528\u7684\u6587\u6863\u6587\u4ef6\u3002

birt.viewer.soapBindingException.NO_HANDLER_FOR_TARGET=\u65e0\u6cd5\u4e3a\u6b64\u76ee\u6807\u627e\u5230\u5904\u7406\u7a0b\u5e8f\u3002\u76ee\u6807: {0}\u3002

birt.viewer.componentProcessorException.MISSING_OPERATOR=\u9519\u8bef: \u7f3a\u5c11\u8fd0\u7b97\u7b26!!!

birt.viewer.exceptionDialog.stackTrace=\u5806\u6808\u8ddf\u8e2a:

birt.viewer.exceptionDialog.showStackTrace=\u663e\u793a\u4f8b\u5916\u5806\u6808\u8ddf\u8e2a

birt.viewer.exceptionDialog.hideStackTrace=\u9690\u85cf\u4f8b\u5916\u5806\u6808\u8ddf\u8e2a

birt.viewer.taglib.NO_ATTR_ID=\u5fc5\u987b\u6307\u5b9a\u5c5e\u6027 ID\u3002

birt.viewer.taglib.INVALID_ATTR_ID=\u5c5e\u6027 ID \u5305\u542b\u65e0\u6548\u5b57\u7b26\u3002

birt.viewer.taglib.ATTR_ID_DUPLICATE=\u5c5e\u6027 ID \u5fc5\u987b\u552f\u4e00\u3002

birt.viewer.taglib.PARAM_NAME_DUPLICATE=\u65e0\u6cd5\u590d\u5236\u53c2\u6570\u540d\u79f0\u3002

birt.viewer.taglib.NO_REPORT_SOURCE=\u5e94\u6307\u5b9a\u62a5\u8868\u8bbe\u8ba1\u6216\u6587\u6863\u6587\u4ef6\u3002

birt.viewer.taglib.NO_REPORT_DOCUMENT=reportlet \u9700\u8981\u62a5\u8868\u6587\u6863\u6587\u4ef6\u3002

birt.viewer.taglib.NO_REQUESTER_NAME=\u9700\u8981\u53c2\u6570 Page \u6807\u7b7e\u7684 'name' \u5c5e\u6027\u3002

birt.viewer.message.document.successful=\u62a5\u8868\u6587\u6863\u6587\u4ef6\u5df2\u6210\u529f\u751f\u6210\u3002

birt.viewer.exception.maybe_disabled_cookies=\u53ef\u80fd\u7531\u4e8e\u5728\u5ba2\u6237\u7aef\u7981\u7528 cookies \u6240\u81f4\u3002


转载于:https://my.oschina.net/u/2357969/blog/411854

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是对代码的每一行的注释: ```c #include <stdio.h> // 包含标准输入输出头文件 #include <stdlib.h> // 包含标准库头文件 #include <string.h> // 包含字符串头文件 #define MAX_STR_LEN 100 // 宏定义字符串的最大长度为100 #define MAX_STR_NUM 10 // 宏定义字符串的最大数量为10 // 比较函数,按照ASCII码从小到大排序 int cmp(const void* a, const void* b) { const char* s1 = *(const char**)a; // 将a强制转换为char*类型,再取a的内容(即字符串的起始地址)赋给s1 const char* s2 = *(const char**)b; // 将b强制转换为char*类型,再取b的内容(即字符串的起始地址)赋给s2 return strcmp(s1, s2); // 调用strcmp函数(字符串比较函数)比较s1和s2的大小,按照ASCII码从小到大排序 } // 排序函数 void sort_str_list(char** str_list, int str_num) { // 排序 qsort(str_list, str_num, sizeof(char*), cmp); // 调用qsort函数(快速排序函数),将str_list数组中的字符串按照ASCII码从小到大排序 } int main() { char* str_list[MAX_STR_NUM] = { // 定义一个字符串数组,数组中存放10个字符串 "hello", "world", "apple", "banana", "orange", "cherry", "dog", "cat", "bird", "fish" }; int str_num = sizeof(str_list) / sizeof(char*); // 计算字符串数组中的字符串数量 // 排序 sort_str_list(str_list, str_num); // 调用sort_str_list函数,排序字符串数组 // 输出排序后的结果 for (int i = 0; i < str_num; i++) { // 循环输出排序后的字符串数组 printf("%s\n", str_list[i]); // 输出字符串数组中的每个字符串 } return 0; // 返回0,表示程序正常退出 } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值