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 :
Préparez l’environnement SuiteScript 2.x :
assurez-vous que votre script est défini avec
@NApiVersion 2.xet qu’il nécessite le moduleN/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,executepour un script planifié).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.createetfile.saveissus du moduleN/file, ainsi que les affectations directes de propriétés pourfolderetencoding.
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
