NetSuite-使用SuiteScript 2.0生成Excel在打开时不断损坏

问题描述 投票:0回答:1

希望您可以提供帮助。

我在SuiteScript 2.0中具有计划的脚本,该脚本执行以下操作:

1)从文件柜加载XML文件(下面的代码片段:

    var fileObj = FILEMODULE.load({id: fileId });

    if (fileObj.size < 10485760){
        log.debug('units to start with', RUNTIMEMODULE.getCurrentScript().getRemainingUsage());
        log.debug('file contents', fileObj.getContents());
        return fileObj.getContents();
    }

此XML文件用作Excel生成的模板。

2)运行保存的搜索并在结果循环内调用一个函数以公式化行和单元格:

    content += '<Row>'
    content +=  '<Cell ss:StyleID="s67"><Data ss:Type="String">' + data + '</Data></Cell>';

循环结束,我们用"<Row>"关闭"</Row>"

3)最后,我们将HTML代码的最后一部分添加到用于Excel文件内容的内容字符串中:

    content += '</Table></Worksheet></Workbook>';

4)创建文件,并上传到文件柜

     var xlsFile = FILEMODULE.create({name: 'TEST.xls', fileType: 'EXCEL', contents: base64EncodedString});

     xlsFile.folder=1173; //folder name=XML Templates
     var fileID = xlsFile.save();   

但是...

5)在没有数据的情况下打开时,它可以正常工作(这确认XML模板很好)。

6)从搜索中打开两行数据后,它可以正常工作。所有26列均打印在单元格中。

7)之后,添加多于2行会导致损坏错误。文件拒绝打开。

enter image description here

[我已经在线使用XML美化工具来检查xml代码,老实说,第1行和第2行的代码从第3行开始看起来并没有太大区别。

在Notepad ++上检出excel文件以检查xml代码,所有新行都注册为一行(而不是新行)-注意屏幕截图停在第169行...这可能是为什么吗?

enter image description here

关于诊断此问题的任何想法,将不胜感激。

注意:初始模板是通过在Excel上以所需样式/格式创建标题,然后另存为“ XML Spreadsheet”而构建的。

excel netsuite suitescript2.0
1个回答
0
投票
我们无法真正看到您正在执行的所有操作,因此调试非常困难。您是关于循环循环然后结束声音的声明,就像您可能有

<Row><Cell/><Cell/> //not closing the row for each row of search results. <Row><Cell/><Cell/> <Row><Cell/><Cell/> ... </Row>

为了清楚起见,您可能希望在每行之后输出换行符。检查规范XML应该只允许换行,但是由于这是MS格式,因此他们可能需要CRLF。
© www.soinside.com 2019 - 2024. All rights reserved.