ANS-0908 · DéVELOPPEMENT SUITESCRIPT

Comment générer un fichier Excel à partir d’un contenu XML dans NetSuite SuiteScript 2.x

Ce guide explique comment créer et enregistrer par programmation un fichier Excel (.xls) dans NetSuite en construisant son contenu XML à l'aide des fonctions du module « fichier » de SuiteScript 2.x.

Solution courte

Pour créer un fichier Excel dans NetSuite à l’aide de SuiteScript 2.x, générez le contenu XML Excel sous forme de chaîne de caractères. Utilisez `file.create` pour instancier un objet fichier avec le type XMLDOC, le nom et le contenu. Définissez le dossier souhaité et les propriétés d’encodage, puis utilisez `file.save` pour enregistrer le fichier dans le « File Cabinet » de NetSuite.

Scénario

Un utilisateur de NetSuite doit générer par programmation une feuille de calcul Excel (.xls) contenant des données spécifiques et l'enregistrer dans le « File Cabinet ». L'exigence est de créer le fichier Excel directement à partir d'un contenu XML plutôt que d'utiliser un fichier CSV ou un autre format plus simple, ce qui permet un formatage plus complexe ou des structures à plusieurs feuilles.

Solution

Pour générer un fichier Excel à partir d’un contenu XML dans NetSuite à l’aide de SuiteScript 2.x, procédez comme suit :

  1. Préparez l’environnement SuiteScript 2.x :

    assurez-vous que votre script est défini avec @NApiVersion 2.x et qu’il nécessite le module N/file. La logique principale sera intégrée à une fonction, qui pourra ensuite être appelée à partir d’un point d’entrée SuiteScript 2.x approprié (par exemple, execute pour un script planifié).

  2. Implémentez la logique de génération de fichier :

    L’extrait de code SuiteScript 2.x suivant montre comment créer un fichier Excel nommé « helloGeorge.xls » comportant deux feuilles contenant des exemples de données. Notez l’utilisation de file.create et file.save issus du module N/file, ainsi que les affectations directes de propriétés pour folder et encoding.

javascript
/**
 * @NApiVersion 2.x
 * @NScriptType ScheduledScript // Example script type; adjust as needed
 */
define(['N/file'], function(file) {
    function doit(){
        var xlsFile = file.create({
            name: 'helloGeorge.xls',
            fileType: file.Type.XMLDOC,
            contents: '<?xml version"1.0"?> <?mso-application progid"Excel.Sheet"?> <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" 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"> <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"> </DocumentProperties><ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> <ProtectStructure>False</ProtectStructure> <ProtectWindows>False</ProtectWindows></ExcelWorkbook> <Styles> <Style ss:ID="Default" ss:Name="Normal"> <Alignment ss:Vertical="Bottom" /> <Borders /> <Font /> <Interior /> <NumberFormat /> <Protection /> </Style></Styles> <Worksheet ss:Name="Sample Sheet 1"> <Table ss:ExpandedColumnCount="2" x:FullColumns="1" x:FullRows="1" ID="Table1"><Column ss:Width="150" /><Column ss:Width="200" /><Row> <Cell><Data ss:Type="Number">1</Data></Cell> <Cell><Data ss:Type="Number">2</Data></Cell></Row><Row> <Cell><Data ss:Type="Number">3</Data></Cell> <Cell><Data ss:Type="Number">4</Data></Cell></Row><Row> <Cell><Data ss:Type="Number">5</Data></Cell> <Cell><Data ss:Type="Number">6</Data></Cell></Row><Row> <Cell><Data ss:Type="Number">7</Data></Cell> <Cell><Data ss:Type="Number">8</Data></Cell></Row></Table></Worksheet><Worksheet ss:Name="Sample Sheet 2"><Table ss:ExpandedColumnCount="2" x:FullColumns="1" x:FullRows="1" ID="Table2"><Column ss:Width="150" /><Column ss:Width="200" /><Row> <Cell><Data ss:Type="String">A</Data></Cell> <Cell><Data ss:Type="String">B</Data></Cell></Row><Row> <Cell><Data ss:Type="String">C</Data></Cell> <Cell><Data ss:Type="String">D</Data></Cell></Row><Row> <Cell><Data ss:Type="String">E</Data></Cell> <Cell><Data ss:Type="String">F</Data></Cell></Row><Row> <Cell><Data ss:Type="String">G</Data></Cell> <Cell><Data ss:Type="String">H</Data></Cell></Row></Table></Worksheet></Workbook>'
        });
        xlsFile.folder = -15; // -15 typically refers to the "Attachments Received" folder
        xlsFile.encoding = 'windows-1252';
        file.save({
            file: xlsFile
        });
    }

    // Call the function. In a typical SuiteScript 2.x implementation,
    // this would be part of an exported entry point (e.g., return { execute: doit };)
    // or called directly if the script type allows for immediate execution.
    doit();
});

Support expert NetSuite

Besoin d’aide pour cet enjeu NetSuite ?

Accompagnement-conseil et configuration pour Développement SuiteScript

Parler à un consultant