http://blog.itpub.net/10359218/viewspace-752601/

最近的项目上写了一个公用的API,很久以前就用EXCEL发布过报表,但从没想过写API来简化。。。

 
 
其实方法很简单,就是自已用EXCEL做个模板,然后另存为XML 电子表格,用TEXT工具打开后,看一下XML 代码就明白了。这个程序无非就是用请求的输出来打印这个XML代码而已.
 
主要功能:
1. 支持数据格式包括字符型,数值型,日期型
2. 支持单元格样式(这个写的比较不灵活,如果有新增样式,需要在sheet_start里增加
3. 支持公式及数组公式
4. 支持自动换行(在样式里)
5. 支持单元格合并(左右合并及上下合并)
6. 支持水平方向定位(INDEX)
 
注意:
在注册请求时,输出方式需定义为XML。请求执行完毕后,点输出,然后选择EXCEL打开即可
 

 
CREATE OR REPLACE PACKAGE BODY cux_common_report_util_pkg IS
 
  --*************************************************************************************
  --*              Copyright (c) XXXXXXXX, 2012
  --*                     All Rights Reserved
  --*************************************************************************************
  --** SYSTEM:                   EBS R12
  --** PROGRAM NAME:             cux_common_report_util_pkg.pls
  --** AUTHOR/EMAIL_ID:          Tony Liu
  --** DATE CREATED:             2013-1-13
  --** LATEST DATE MODIFIED:     2013-1-13
  --**
  --** DESCRIPTION:              用于发布输出格式为EXCEL的报表公用工具包
  --**
  --** INPUTS:
  --**
  --** OUTPUTS:                  N/A
  --**
  --** FUNCTION(S) CALLED:       N/A
  --**
  --** CAUTIONS:
  --**
  --**************************************************************************************
  --** Revision History
  --**   Date                   Revision Number        By         Reason/Defect
  --**-----------------------------------------------------------------------------
  --** 2013-1-13               1.0                     Tony Liu      Initial Version
  --**************************************************************************************
 
 
  --******************************************************************************
  -- Procedure: 输出信息到请求输出(OUTPUT)中
  -- 版本: 1.0
  -- Author: 刘峰
  --******************************************************************************
  PROCEDURE line(p_text IN VARCHAR2) IS
  BEGIN
    fnd_file.put_line(fnd_file.output, p_text);
    --dbms_output.put_line(p_text);
  END;
 
 
 
  --******************************************************************************
  -- Procedure: 输出XML文件的头部信息
  -- 版本: 1.0
  -- Author: 刘峰
  -- 说明:  author 传入提交请求的员工全名
  --        creation_date 格式为 to_char(sysdate,'yyyy-mm-ddhh24:mi:ss')
  --        company_name 传入xxxxxxx
  --******************************************************************************
  PROCEDURE sheet_start(p_author        IN VARCHAR2,
                        p_report_name   IN VARCHAR2,
                        p_creation_date IN VARCHAR2 DEFAULT to_char(SYSDATE,
                                                                    'yyyy-mm-dd hh24:mi:ss'),
                        p_company_name  IN VARCHAR2 DEFAULT 'XXXXXX') IS
  
    v_common_info1 VARCHAR2(32767);
    v_common_info2 VARCHAR2(32767);
    v_sheet_name   VARCHAR2(500);
    v_date         VARCHAR2(20);
    v_time         VARCHAR2(20);
    TYPE t_style_tbl IS TABLE OF VARCHAR2(32767) INDEX BY BINARY_INTEGER;
    v_style_tbl t_style_tbl;
  
  BEGIN
  
    v_date := substr(p_creation_date, 1, 10);
    v_time := substr(p_creation_date, 12);
  
    --XML 头信息
    v_common_info1 := '
                     

                      xmlns:o="urn:schemas-microsoft-com:office:office"
                       xmlns:x="urn:schemas-microsoft-com:office:excel"
                       xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
                       xmlns:html="http://www.w3.org/TR/REC-html40">
                       
                       ' || p_author ||
                      '
                       ' || p_author ||
                      '
                       ' || v_date || 'T' ||
                      v_time || 'Z
                       ' || p_company_name ||
                      '';
    v_common_info2 := '14.00
                       
                       
                       
                       
                       
                       11250
                       21420
                       120
                       15
                       False
                       False
                       ';
  
    --工作表缺省样式
    v_style_tbl(1) := '
                        //此为模板的默认style
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                     ';
    --参数使用的样式
    v_style_tbl(2) := '
                       //此为参数的默认style
                       
                       
                       
                       
                       
                       
                       
                       
                     ';
  
    --报表标题的样式(自动换行)
    v_style_tbl(3) := '
                       //此为报表标题的默认style
                       
                       
                       
                       
                       
                       
                       
                     ';
  
    --列标题的样式(自动换行)
    v_style_tbl(4) := '
                       //此为报表列标题的默认style
                       
                       
                       
                       
                       
                       
                       
                       
                       
                     ';
  
    --普通日期样式
    v_style_tbl(5) := '
                       //此为日期型字段的默认style
                       
                       
                       
                       
                       
                       
                       
                     ';
  
    --高亮日期样式
    v_style_tbl(6) := '
                       //此为日期型字段的带背景色的style(黄色加强显示)
                       
                       
                       
                       
                       
                       
                       
                       
                      ';
  
    --普通会计数值样式
    v_style_tbl(7) := '
                       //此为会计用数值型字段的默认style
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                     ';
  
    --高亮会计数值样式
    v_style_tbl(8) := '
                       //此为会计用数值型字段的带背景色的style(黄色加强显示)
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                     ';
  
    --常规样式(自动换行)
    v_style_tbl(9) := '
                       //此为普通字段的style
                       
                       
                       
                       
                       
                       
                       
                     ';
  
    --常规高亮样式(自动换行)
    v_style_tbl(10) := '
                         //此为普通字段的的带背景色的style(黄色加强显示)
                         
                           
                           
                           
                           
                           
                           
                           
                         ';
    --会计(4位小数)样式
    v_style_tbl(11) := '
                       //此为会计用数值型字段的默认style(保留4位小数)
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                     ';
  
    --会计(4位小数)高亮样式
    v_style_tbl(12) := '
                       //此为会计用数值型字段的带背景色的style(保留4位小数,黄色加强显示)
                       
                       
                       
                       
                       
                       
                       
                       
                       
                       
                     ';
  
  
    --会计样式(两位小数,负数加括号,0显示为'-')
    --样式:999,999,999.00 每三位一个分隔符999,999,999.00,负数用空号包住(123),如果是零 则是' - '
    v_style_tbl(13) := '                        
                       
                       
                       
                       
                       
                       
                       
                       
                                              
                                               
                        ';
  
    --会计样式(两位小数,负数加括号,0显示为'-', 并用黄色加亮)
    --样式:999,999,999.00 每三位一个分隔符999,999,999.00,负数用空号包住(123),如果是零 则是' - '
    v_style_tbl(14) := '                        
                       
                       
                       
                       
                       
                       
                       
                       
                       
                                            
                        ';
  
  
    --定义工作表名称
    IF p_report_name IS NULL THEN
      v_sheet_name := '';
    ELSE
      v_sheet_name := '';
    END IF;
  
    --输出XML头
    line(v_common_info1 || v_common_info2);
  
    --输出样式
    FOR i IN 1 .. v_style_tbl.count
    LOOP
      line(v_style_tbl(i));
    END LOOP;
  
    --样式结尾
    line('');
    --工作表名称
    line(v_sheet_name);
  
  
  
  END;
 
  --******************************************************************************
  -- Procedure: 输出XML文件的结尾信息
  -- 版本: 1.0
  -- Author: 刘峰
  --******************************************************************************
  PROCEDURE sheet_end IS
  BEGIN
    line('
             
             
             
             
             
             
             
             
              0
              0
             
             
             
             
              3
              4
             
             
              False
              False
             
           
            ');
  END;
 
 
  --******************************************************************************
  -- Procedure: 表格开始
  -- 版本: 1.0
  -- Author: 刘峰
  --******************************************************************************
  PROCEDURE table_start IS
  BEGIN
    line('');

  END;
 
 
  --******************************************************************************
  -- Procedure: 表格结束
  -- 版本: 1.0
  -- Author: 刘峰
  --******************************************************************************
  PROCEDURE table_end IS
  BEGIN
    line('

');

  END;
 
 
  --******************************************************************************
  -- Procedure: 初始化列宽
  -- 版本: 1.0
  -- Author: 刘峰
  --******************************************************************************
  PROCEDURE define_column(p_width IN NUMBER, p_span IN NUMBER DEFAULT NULL) IS
  BEGIN
    IF p_span IS NULL THEN
      line('');
    ELSE
      line('');
    END IF;
  END;
 
 
  --******************************************************************************
  -- Procedure: 输出报表标题
  -- 版本: 1.0
  -- Author: 刘峰
  -- 说明:   merge: 向右合并 值要比将合并的列小1,比如要合并3列,只需传入2
  --        merge_down: 向下合并
  --******************************************************************************
  PROCEDURE rpt_header(p_text       IN VARCHAR2,
                       p_merge      IN NUMBER DEFAULT NULL,
                       p_merge_down IN NUMBER DEFAULT NULL) IS
    v_merge      VARCHAR2(100);
    v_merge_down VARCHAR2(100);
  BEGIN
    IF p_merge IS NOT NULL
       AND p_merge > 0 THEN
      v_merge := 'ss:MergeAcross="' || p_merge || '"';
    END IF;
    IF p_merge_down IS NOT NULL
       AND p_merge_down > 0 THEN
      v_merge_down := 'ss:MergeDown="' || p_merge_down || '"';
    END IF;
  
    line('
               <cell '="" ||="" v_merge="" v_merge_down="" ||<="" div="">

         'ss:StyleID="s1">' || p_text ||
         '
          ');
  
  
  END;
 
 
  --******************************************************************************
  -- Procedure: 输出报表参数
  -- 版本: 1.0
  -- Author: 刘峰
  -- 说明:   merge:向右合并,值要比将合并的列小1,比如要合并3列,只需传入2
  --        merge_down: 向下合并
  --        index: 单元格的位置(水平第N列)
  --******************************************************************************
  PROCEDURE rpt_parameter(p_text       IN VARCHAR2,
                          p_merge      IN NUMBER DEFAULT NULL,
                          p_merge_down IN NUMBER DEFAULT NULL,
                          p_index      IN NUMBER DEFAULT NULL) IS
  
    v_merge      VARCHAR2(100);
    v_merge_down VARCHAR2(100);
    v_index      VARCHAR2(100);
  
  BEGIN
    IF p_merge IS NOT NULL
       AND p_merge > 0 THEN
      v_merge := 'ss:MergeAcross="' || p_merge || '"';
    END IF;
    IF p_merge_down IS NOT NULL
       AND p_merge_down > 0 THEN
      v_merge_down := 'ss:MergeDown="' || p_merge_down || '"';
    END IF;
    IF p_index IS NOT NULL
       AND p_index > 0 THEN
      v_index := 'ss:Index="' || p_index || '"';
    END IF;
  
    line('<cell '="" ||="" v_index="" v_merge="" v_merge_down="" ||<="" div="">

         'ss:StyleID="m1">' || p_text ||
         '');
  
  END;
 
 
  --******************************************************************************
  -- Procedure: 行开始
  -- 版本: 1.0row_start
  -- Author: 刘峰
  -- 说明:Height : 行高度
  --******************************************************************************
  PROCEDURE row_start(p_height IN NUMBER DEFAULT NULL) IS
    v_height VARCHAR2(100);
  
  BEGIN
    IF p_height IS NOT NULL
       AND p_height > 0 THEN
      v_height := 'ss:Height="' || p_height || '"';
    END IF;
    line('');
  END;
 
 
  --******************************************************************************
  -- Procedure: 行结束
  -- 版本: 1.0
  -- Author: 刘峰
  --******************************************************************************
  PROCEDURE row_end IS
  BEGIN
    line('');
  END;
 
 
  --******************************************************************************
  -- Procedure: 输出列标题
  -- 版本: 1.0
  -- Author: 刘峰
  -- 说明:  merge的值要比将合并的列小1,比如要合并3列,只需传入2
  --        merge_down: 向下合并
  --        index: 单元格的位置(水平第N列)
  --******************************************************************************
  PROCEDURE rpt_title(p_text       IN VARCHAR2,
                      p_merge      IN NUMBER DEFAULT NULL,
                      p_merge_down IN NUMBER DEFAULT NULL,
                      p_index      IN NUMBER DEFAULT NULL) IS
  
    v_merge      VARCHAR2(100);
    v_merge_down VARCHAR2(100);
    v_index      VARCHAR2(100);
    v_wrap       VARCHAR2(100);
  
  BEGIN
  
    IF p_merge IS NOT NULL
       AND p_merge > 0 THEN
      v_merge := 'ss:MergeAcross="' || p_merge || '"';
    END IF;
    IF p_merge_down IS NOT NULL
       AND p_merge_down > 0 THEN
      v_merge_down := 'ss:MergeDown="' || p_merge_down || '"';
    END IF;
    IF p_index IS NOT NULL
       AND p_index > 0 THEN
      v_index := 'ss:Index="' || p_index || '"';
    END IF;
  
    line('<cell '="" ||="" v_index="" v_merge="" v_merge_down="" ||<="" div="">

         'ss:StyleID="s2">' || p_text ||
         '');
  
  END;
 
 
  --******************************************************************************
  -- Procedure: 输出报表明细
  -- 版本: 1.0
  -- Author: 刘峰
  -- 说明: type 包括 String/Number/DateTime, 注意大小写
  --       formula 必须要以=开头
  --       merge的值要比将合并的列小1,比如要合并3列,只需传入2
  --        merge_down: 向下合并
  --        index: 单元格的位置(水平第N列)
  --        array_range: 数组公式
  --******************************************************************************
  PROCEDURE rpt_detail(p_text        IN VARCHAR2 DEFAULT NULL,
                       p_type        IN VARCHAR2 DEFAULT 'String',
                       p_formula     IN VARCHAR2 DEFAULT NULL,
                       p_style.       IN VARCHAR2 DEFAULT NULL,
                       p_merge       IN NUMBER DEFAULT NULL,
                       p_merge_down  IN NUMBER DEFAULT NULL,
                       p_index       IN NUMBER DEFAULT NULL,
                       p_array_range IN BOOLEAN DEFAULT FALSE) IS
  
    v_style.       VARCHAR2(50);
    v_merge       VARCHAR2(50);
    v_type        VARCHAR2(50);
    v_formula     VARCHAR2(30000);
    v_index       VARCHAR2(100);
    v_merge_down  VARCHAR2(100);
    v_array_range VARCHAR2(100);
  
  BEGIN
  
    IF p_type = 'Number' THEN
      v_type := '';
    ELSIF p_type = 'String' THEN
      v_type := '';
    ELSIF p_type = 'DateTime' THEN
      v_type := '';
    END IF;
  
    IF p_formula IS NOT NULL THEN
      v_formula := 'ss:Formula="' || p_formula || '"';
    END IF;
  
    IF p_style. IS NOT NULL THEN
      v_style.:= 'ss:StyleID="' || p_style. '"';
    ELSE
      v_style.:= 'ss:StyleID="s7"'; --常规格式
    END IF;
    IF p_merge IS NOT NULL
       AND p_merge > 0 THEN
      v_merge := 'ss:MergeAcross="' || p_merge || '"';
    END IF;
  
    IF p_merge_down IS NOT NULL
       AND p_merge_down > 0 THEN
      v_merge_down := 'ss:MergeDown="' || p_merge_down || '"';
    END IF;
  
    IF p_index IS NOT NULL
       AND p_index > 0 THEN
      v_index := 'ss:Index="' || p_index || '"';
    END IF;
  
    IF p_array_range THEN
      v_array_range := 'ss:ArrayRange="RC"';
    END IF;
  
    line('<cell '="" ||="" v_index="" v_merge="" v_merge_down="" ||<="" div="">

         v_style. ' ' || v_array_range || ' ' || v_formula || '>' ||
         v_type || p_text || '');
  END;
 
 
 
  --******************************************************************************
  -- Procedure: 示例代码
  -- 版本: 1.0
  -- Author: 刘峰
  --******************************************************************************
  PROCEDURE report_sample(errbuf OUT VARCHAR2, retcode OUT VARCHAR2) IS
  
    g_date_style.     VARCHAR2(10) := 's3'; --普通日期型
    g_date_h_style.   VARCHAR2(10) := 's4'; --高亮日期型
    g_number_style.   VARCHAR2(10) := 's5'; --普通会计数字
    g_number_h_style. VARCHAR2(10) := 's6'; --高亮会计数字
  
    g_normal_h_style. VARCHAR2(10) := 's7'; --通用型
    g_normal_style.   VARCHAR2(10) := 's8'; --高亮通用型
  
    g_number4_style.   VARCHAR2(10) := 's9'; --普通会计数字(保留4位小数)
    g_number4_h_style. VARCHAR2(10) := 's10'; --高亮会计数字(保留4位小数)
  
    v_person VARCHAR2(50);
  BEGIN
  
    --获取提交人名称
    BEGIN
      SELECT t.full_name
        INTO v_person
        FROM per_all_people_f t
       WHERE t.person_id =
             (SELECT fu.employee_id
                FROM fnd_user fu
               WHERE fu.user_id = fnd_global.user_id)
         AND nvl(t.effective_end_date, SYSDATE + 1) > SYSDATE;
    EXCEPTION
      WHEN OTHERS THEN
        SELECT fu.user_name
          INTO v_person
          FROM fnd_user fu
         WHERE fu.user_id = fnd_global.user_id;
    END;
  
    --定义XML头信息
    cux_common_report_util_pkg.sheet_start(p_author        => v_person,
                                           p_creation_date => to_char(SYSDATE,
                                                                      'yyyy-mm-dd hh:mi:ss'),
                                           p_company_name  => 'XXXXXX',
                                           p_report_name   => '测试报表');
  
    --表格开始
    cux_common_report_util_pkg.table_start;
  
    --定义列
    cux_common_report_util_pkg.define_column(150);
    cux_common_report_util_pkg.define_column(150);
    cux_common_report_util_pkg.define_column(150);
    cux_common_report_util_pkg.define_column(150);
    cux_common_report_util_pkg.define_column(150);
    cux_common_report_util_pkg.define_column(150);
    cux_common_report_util_pkg.define_column(150);
    cux_common_report_util_pkg.define_column(150);
    cux_common_report_util_pkg.define_column(150);
    cux_common_report_util_pkg.define_column(150);
  
    --输出报表标题
    cux_common_report_util_pkg.rpt_header('测试报表', 9);
  
    --输出报表参数
    cux_common_report_util_pkg.row_start;
    cux_common_report_util_pkg.rpt_parameter('参数1: WELCOME', 2);
    cux_common_report_util_pkg.rpt_parameter('参数2: HELLO', 2);
    cux_common_report_util_pkg.row_end;
  
    --输出报表列标题
    cux_common_report_util_pkg.row_start;
  
    cux_common_report_util_pkg.rpt_title('普通字符型');
    cux_common_report_util_pkg.rpt_title('高亮字符型');
    cux_common_report_util_pkg.rpt_title('普通数字型');
    cux_common_report_util_pkg.rpt_title('高亮数字型');
    cux_common_report_util_pkg.rpt_title('会计数字型');
    cux_common_report_util_pkg.rpt_title('高亮会计数字型');
    cux_common_report_util_pkg.rpt_title('普通日期型');
    cux_common_report_util_pkg.rpt_title('高亮日期型');
    cux_common_report_util_pkg.rpt_title('普通公式列');
    cux_common_report_util_pkg.rpt_title('高亮公式列');
  
  
    cux_common_report_util_pkg.row_end;
  
    --输出报表明细
    cux_common_report_util_pkg.row_start;
    --字符类型
    cux_common_report_util_pkg.rpt_detail(p_text  => '王小二',
                                          p_type  => 'String',
                                          p_style. => g_normal_style);
    cux_common_report_util_pkg.rpt_detail(p_text  => '男性',
                                          p_type  => 'String',
                                          p_style. => g_normal_h_style);
    --数值类型
    cux_common_report_util_pkg.rpt_detail(p_text  => '1234.345',
                                          p_type  => 'Number',
                                          p_style. => g_normal_style);
    cux_common_report_util_pkg.rpt_detail(p_text  => '345.456',
                                          p_type  => 'Number',
                                          p_style. => g_normal_h_style);
  
    cux_common_report_util_pkg.rpt_detail(p_text  => '34324.345',
                                          p_type  => 'Number',
                                          p_style. => g_number_style);
    cux_common_report_util_pkg.rpt_detail(p_text  => '34324.345',
                                          p_type  => 'Number',
                                          p_style. => g_number_h_style);
    --日期类型
    cux_common_report_util_pkg.rpt_detail(p_text  => to_char(trunc(SYSDATE),
                                                             'yyyy-mm-dd'),
                                          p_type  => 'DateTime',
                                          p_style. => g_date_style);
    cux_common_report_util_pkg.rpt_detail(p_text  => to_char(trunc(SYSDATE),
                                                             'yyyy-mm-dd'),
                                          p_type  => 'DateTime',
                                          p_style. => g_date_h_style);
  
    --公式类型
    cux_common_report_util_pkg.rpt_detail(p_text    => NULL,
                                          p_formula => '=rc[-6]+rc[-5]',
                                          p_type    => 'Number',
                                          p_style.   => g_number_style);
    cux_common_report_util_pkg.rpt_detail(p_text    => NULL,
                                          p_formula => '=rc[-5]+rc[-4]',
                                          p_type    => 'Number',
                                          p_style.   => g_number_h_style);
  
    cux_common_report_util_pkg.row_end;
  
    --表格结束
    cux_common_report_util_pkg.table_end;
  
    --工作表结束
    cux_common_report_util_pkg.sheet_end;
  END;
 
 
 
END cux_common_report_util_pkg;

EBS中 EXCEL 格式报表输出的公用API的更多相关文章

  1. python中json格式数据输出实现方式

    python中json格式数据输出实现方式 主要使用json模块,直接导入import json即可. 小例子如下: #coding=UTF-8 import json info={} info[&q ...

  2. ORACLE EBS xml publisher 报表输出字符字段前部"0"被EXCEL自动去掉问题

    http://www.cnblogs.com/lzsu1989/archive/2012/10/17/2728528.html   Oracle  EBS 提供多种报表的开发和输出形式,由于MS Ex ...

  3. Report_客制化报表输出Excel后去0问题(案例)

    2014-02-01 Created By BaoXinjian

  4. Oracle EBS R12 XML数据表格的Excel脚本报表

    http://www.cnblogs.com/quanweiru/archive/2012/07/28/2612680.html 一.概述 在EBS系统中,报表是一个非常重要的客户化开发内容,也是系统 ...

  5. EBS 多sheet页Excel动态报表开发过程

    http://zhangzhongjie.iteye.com/blog/1779891 .前言本文讲述的多Sheet页EXCEL报表开发方式和开发HTML,PDF这类报表的方法大致是一致的,唯一不同的 ...

  6. EBS中使用JAVA方式发送HTML格式邮件

    转自huan.gu专栏:http://blog.csdn.net/gh320/article/details/17174769 EBS中使用JAVA方式发送HTML格式邮件 一.开发工具:JDevel ...

  7. DataTable to Excel(使用NPOI、EPPlus将数据表中的数据读取到excel格式内存中)

    /// <summary> /// DataTable to Excel(将数据表中的数据读取到excel格式内存中) /// </summary> /// <param ...

  8. 在Java中导出word、excel格式文件时JSP页面头的设置

    我们在JSP中往往会把一些表格里的东西需要导出到本地,一般都是导成word.excel格式的文件.这只需要在JSP页面头设置及在<head></head>标签中添加下面的代码: ...

  9. VSTO 学习笔记(六)在 Excel 2010中使用RDLC报表

    原文:VSTO 学习笔记(六)在 Excel 2010中使用RDLC报表 Excel具有强大的图表显示.分析功能,这点毋庸置疑,但是如果将常规MIS系统中的数据以报表的形式在Excel中显示,却并不那 ...

随机推荐

  1. MySQL 检索数据及提高检索速度的方法

    检索数据 mysql> SELECT [DISTINCT] 表名.列名,表名.列名,表名.列名 -- 使用通配符*表示所有列 DISTINCT表示返回不同的值 -> FROM 数据库名.表 ...

  2. cron Linux下的定时执行工具

    说明:测试平台  Ubuntu 16.04.4 LTS cron是一个Linux下的定时执行工具,可以在无需人工干预的情况下运行作业.所以,在Linux中,周期性执行的任务一般由cron这个守护进程来 ...

  3. Using The jQuery Migrate Plugin

    jQuery( html [, ownerDocument ] )Returns: jQuery Description: Creates DOM elements on the fly from t ...

  4. tesseract-ocr如何训练Tesseract 4.0

    引自:https://blog.csdn.net/huobanjishijian/article/details/76212214 原文:https://github.com/tesseract-oc ...

  5. 【WebService】WebService基础知识(一)

    WebService是什么? 1. 基于Web的服务:服务器端整出一些资源让客户端应用访问(获取数据) 2. 一个跨语言.跨平台的规范(抽象) 3. 多个跨平台.跨语言的应用间通信整合的方案(实际) ...

  6. 【C#】解析C#中JSON.NET的使用

    目录结构: contents structure [-] JSON.NET简介 Serializing and Deserializing JSON Json Convert Json Seriali ...

  7. GOAP

    市面上Unity人工智能的书籍基本上都是介绍这几个方面: AI角色的自主移动 --- 操控行为, 单体,小队,群体的行为. 我之前的文章 Unity Movement AI (一) , Unity M ...

  8. 又一道区间DP的题 -- P3146 [USACO16OPEN]248

    https://www.luogu.org/problemnew/show/P3146 一道区间dp的题,以区间长度为阶段; 但由于要处理相邻的问题,就变得有点麻烦; 最开始想了一个我知道有漏洞的方程 ...

  9. mysql字符串类型数据

    字符串类型是在数据库中存储字符串的数据类型,字符串类型包括char,varchar,text,enum和set. OK,我们来一个一个的看下上面提到的几种类型. char类型和varchar类型 ch ...

  10. 2019.01.22 bzoj3333: 排队计划(逆序对+线段树)

    传送门 题意简述:给出一个序列,支持把ppp~nnn中所有小于等于apa_pap​的'扯出来排序之后再放回去,要求动态维护全局逆序对. 思路:我们令fif_ifi​表示第iii个位置之后比它大的数的个 ...