如何直接读取 xlsx 文件并从 suitescript 中保存它。 我正在尝试使用 exceljs,但它在服务器脚本中不正确。
const workbook = new Excel.Workbook();
workbook.xlsx.readFile('../datafiles/mydata.xlsx').then(() => {
var sheet = workbook.getWorksheet("data");
console.log(sheet.actualRowCount)
for (var i = 1; i <= sheet.actualRowCount; i++) {
for (var j = 1; j <= sheet.actualColumnCount; j++) {
data = sheet.getRow(i).getCell(j).toString();
process.stdout.write(data+" ");
// console.log(data)
}
console.log()
}
});
您可以检查我在 SuiteScript 2.x 中的实现,以使用外部库编写 XLSX 文件(无着色、格式化等)。
这是非常基本的,仅用于概念证明,请在此处检查: https://github.com/gmihaylov/netsuite-saved-search-export-excel-xlsx
希望这会有所帮助。
这里有一个服务器脚本: 定义(['N / ui / serverWidget','N /运行时','N /文件','N /搜索','N /渲染','N /编码','N /记录','N /重定向'], 函数(ui、运行时、文件、搜索、渲染、编码、记录、重定向){
function generateXLS(){
var url;
try {
log.debug('generateXLS','* * S T A R T * * ->' + runtime.getCurrentScript().getRemainingUsage());
xmlString = generateXlsHeader(objData);
xmlString += generateXlsBody(objData);
name = 'Excel_Information_' + objData.customerData.internalId + '.xls';
base64EncodedString = encode.convert({
string: xmlString,
inputEncoding: encode.Encoding.UTF_8,
outputEncoding: encode.Encoding.BASE_64
});
base64EncodedString = base64EncodedString.replace(/&/g, '&');
objExcel = file.create({
name: name,
fileType: file.Type.EXCEL,
contents: base64EncodedString
});
repFolderID = 1234;
if (isEmpty(repFolderID)) {
throw 'repFolderID missing';
}
objExcel.folder = repFolderID;
fileId = objExcel.save();
fileObj = file.load({
id: fileId
});
url = fileObj.url;
log.debug('generateXLS','* * E N D * * ->' + runtime.getCurrentScript().getRemainingUsage());
} catch (error) {
log.error('generateXLS', error);
}
return url;
}
function onRequest(context) {
generateXLS();
}
return {
onRequest: onRequest
};
});