前言
以下示例为使用X++代码调用Resources中的xlsx文件,并另存到电脑的指定位置
一、获取Resources
FilePath resourcesFile
resourcesFile = SysResource::saveToTempFile(SysResource::getResourceNode(resourcestr('Resources_name')));
二、导出文件到本地
在D365中和AX2012中的导出方法是不一样的,示例如下:
1.AX2012示例
ResourceNode resourceNode;
SysExcelApplication application;
SysExcelWorkbooks workbooks;
SysExcelWorkbook workbook;
SysExcelWorksheets worksheets;
SysExcelWorksheet worksheet;
SysExcelCells cells;
COMVariantType type;
int row =1;
FileName origenfilename;
origenfilename = resourcesFile;
application = SysExcelApplication::construct();
application.displayAlerts(false);
workbooks = application.workbooks();
workbooks.open(origenfilename);
workbook = workbooks.item(1);
worksheets = workbook.worksheets();
worksheet = worksheets.itemFromNum(1);
cells = worksheet.cells();
cells.item(4,1).value('test1');
cells.item(4,2).value('test2');
cells.item(4,3).value('test3');
workbook.saveAs("C:\\Temp\\Test\\TestExcel.xlsx");
application.quit();
info('import succeed');
2.D365
using System.IO;
using OfficeOpenXml;
using OfficeOpenXml.Style;
using OfficeOpenXml.Table;
class RunnableClass1
{
/// <summary>
/// Runs the class with the specified arguments.
/// </summary>
/// <param name = "_args">The specified arguments.</param>
public static void main(Args _args)
{
str tmpfile;
str value;
CustTable custTable;
FileInfo templateFile;
ExcelRange cells,cell;
MemoryStream memoryStream = new MemoryStream();
//Get Resource temPlate
tmpfile = SysResource::saveToTempFile(SysResource::getResourceNode(resourcestr('GLOB_CEC_HensiveIncomeReportTemplate')));
//convent temPlate type as File Fileinfo
//将resource文件转换为IO流
templateFile = new System.IO.FileInfo(tmpfile);
//将IO流传递给excelpackage
using (ExcelPackage filepackage = new ExcelPackage(templateFile))
{
int currentRow = 1;
// 获取模板第一个sheet
cells = filepackage.Workbook.Worksheets.get_Item(1).get_Cells();
// 获取内存流
memoryStream = filepackage.Stream;
cells.get_Item(currentRow, 1)。value = '1' ;
filepackage.Save();
file::SendFileToUser(memoryStream,'test_voucher.xlsx');
}
}
}