excel - 通过 PL/SQL UTL_FILE 生成 Excel,样式错误

标签 excel oracle plsql export-to-excel utl-file

我正在使用 ExcelDocTypeUtils pkg 将查询数据导出到 EXCEL 文件。
当我运行该程序时,我得到一个 excel 文件,但是当我尝试打开它时,会弹出此错误:Program came up in the following areas during load: Style
我认为失败的原始行是:

-- Prepare Headers
owa_util.mime_header('application/vnd.ms-excel',FALSE);

我已经尝试过设置:
<?xml version="1.0" encoding="UTF-8"?>'

但是当我这样做时,错误变为以下内容:Program came up in the following areas during load: 'Strict Parse Error'
这是我执行程序的方式:
/* Starts */
execute employeereport;


CREATE OR REPLACE PROCEDURE employeeReport AS

   v_sql_salary        VARCHAR2(200) := 'SELECT last_name,first_name,salary FROM hr.employees ORDER BY last_name,first_name';
   v_sql_contact       VARCHAR2(200) := 'SELECT last_name,first_name,phone_number,email FROM hr.employees ORDER BY last_name,first_name';
   v_sql_hiredate      VARCHAR2(200) := 'SELECT last_name,first_name,to_char(hire_date,''MM/DD/YYYY'') hire_date FROM hr.employees ORDER BY last_name,first_name';
   excelReport         ExcelDocumentType := ExcelDocumentType();
   v_worksheet_rec     ExcelDocTypeUtils.T_WORKSHEET_DATA := NULL;
   v_worksheet_array   ExcelDocTypeUtils.WORKSHEET_TABLE  :=           }  
   ExcelDocTypeUtils.WORKSHEET_TABLE();
   documentArray    ExcelDocumentLine := ExcelDocumentLine();
   v_file                    UTL_FILE.FILE_TYPE;


    BEGIN

    -- Salary
    v_worksheet_rec.query           := v_sql_salary;
    v_worksheet_rec.worksheet_name  := 'Salaries';
    v_worksheet_rec.col_count       := 3;
    v_worksheet_rec.col_width_list  := '25,20,15';
    v_worksheet_rec.col_header_list := 'Lastname,Firstname,Salary';

    v_worksheet_array.EXTEND;
    v_worksheet_array(v_worksheet_array.count) := v_worksheet_rec;

    -- Contact
    v_worksheet_rec.query           := v_sql_contact;
    v_worksheet_rec.worksheet_name  := 'Contact_Info';
    v_worksheet_rec.col_count       := 4;
    v_worksheet_rec.col_width_list  := '25,20,20,25';
    v_worksheet_rec.col_header_list := 'Lastname,Firstname,Phone,Email';

    v_worksheet_array.EXTEND;
    v_worksheet_array(v_worksheet_array.count) := v_worksheet_rec;

    -- Contact
    v_worksheet_rec.query           := v_sql_hiredate;
    v_worksheet_rec.worksheet_name  := 'Hiredate';
    v_worksheet_rec.col_count       := 3;
    v_worksheet_rec.col_width_list  := '25,20,20';
    v_worksheet_rec.col_header_list := 'Lastname,Firstname,Hiredate';

    v_worksheet_array.EXTEND;
    v_worksheet_array(v_worksheet_array.count) := v_worksheet_rec;
    owa.num_cgi_vars := NVL(owa.num_cgi_vars, 0);
    excelReport := ExcelDocTypeUtils.createExcelDocument(v_worksheet_array);
    documentArray := excelReport.getDocumentData;

    v_file := UTL_FILE.fopen('C:\','test.xml','W',4000);

    FOR x IN 1 .. documentArray.COUNT LOOP

        UTL_FILE.put_line(v_file,documentArray(x));

    END LOOP;

    UTL_FILE.fclose(v_file);

    --excelReport.displayDocument;

    END;

最佳答案

解决了。
我不知道它做了什么,我唯一改变它的是 .xls 扩展名而不是 .xml
谢谢。

关于excel - 通过 PL/SQL UTL_FILE 生成 Excel,样式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28898972/

相关文章:

excel - 使用 VBA 删除 Excel 表格行

excel - Vba -excel.公式方法速度慢

sql - 带有 NOT IN 的多个 SELECT - 内部 Select 语句返回空,整个 SELECT 返回空

显示工资变化的 SQL 触发器

oracle - 如何在包中创建 PL/SQL 函数

sql - 将多个列值插入单个插入值?

c# - 基于 Excel 工作表更改启用/禁用功能区按钮 - VSTO

vba - 我见过的最奇怪的 VBA 问题(VBASigned bool 条件上的可能错误)

sql - 在 MERGE 语句 ORACLE 中更新多列

oracle - 通过 SQLLDR 在 Oracle 中加载数据