如何在 Oracle PLSQL 中以“文本”格式保存 excel 文件?

Posted

技术标签:

【中文标题】如何在 Oracle PLSQL 中以“文本”格式保存 excel 文件?【英文标题】:How to save an excel file in the "text" format in Oracle PLSQL? 【发布时间】:2021-04-19 08:28:09 【问题描述】:

我在表单中存在按钮的 WHEN BUTTEN PRESSED 触发器中编写了代码。代码保存一个excel文件,如下:

DECLARE
    OUT_FILE TEXT_IO.FILE_TYPE;
    ---
    CURSOR CUR_1  IS 
    SELECT  V.NO        ,
            V.DATE          
              
    FROM    V_RECEIPT V 
    ---
BEGIN   
    OUT_FILE := TEXT_IO.FOPEN('D:\EXPORT_EXCEL\'||:GLOBAL.USRNAME||'.CSV','W'); 
    ---
    TEXT_IO.PUT(OUT_FILE,'SEP = ;');    
    TEXT_IO.NEW_LINE(OUT_FILE);
    
    TEXT_IO.PUT(OUT_FILE,' NO_RECEIPT ; DATE_RECEIPT ');    

    TEXT_IO.NEW_LINE(OUT_FILE);
        ---
    FOR X IN CUR_1 LOOP

        TEXT_IO.PUT(OUT_FILE, '00001'      || ';' ); 

        TEXT_IO.PUT(OUT_FILE, X.DATE              ); 
        ---
        TEXT_IO.NEW_LINE(OUT_FILE);
    END LOOP;
    ---
    TEXT_IO.FCLOSE(OUT_FILE);
    ---
END;

问题是在输出的excel文件中,指定为文本为“00001”的列被保存为“1”。我不知道天气是否有办法将 excel 单元格格式确定为“文本”。 有什么解决办法吗?

【问题讨论】:

如果你用文本编辑器查看,它实际上是否保存为文本文件中的1;还是仅在 Excel 中显示为 1,这是已知问题/功能? @AlexPoole 在excel中只显示为'1',我希望它保存并在excel中显示为'00001'。 superuser.com/q/318420/45140 Excel不是文本编辑器,所以显示的数据和实际数据不同 @AlexPoole 非常感谢你!终于成功了! 【参考方案1】:

要将值解释为字符串而不将其转换为 .CSV 文件中的字符串以外的数据类型,请编写如下代码:

TEXT_IO.PUT(OUT_FILE, '"=""00001"""'                || ';' );

还有这个:

TEXT_IO.PUT(OUT_FILE, '"=""' || X.DATE || '"""' || ';' );  

【讨论】:

以上是关于如何在 Oracle PLSQL 中以“文本”格式保存 excel 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Oracle 中以 12 小时格式存储日期的 2 个日期之间的小时时差?

如何在oracle中以dd / mm / yyyy格式将当前日期插入DATE字段

如何使用pfile文件 修改oracle数据库参数

如何在 PyQt4 创建的 GUI 中以富格式显示一些不可编辑的文本?

oracle plsql wmsys.wm_concat()函数问题

如何用plsql从oracle中导入导出数据