D365:导出指定的数据到Text文本


前言

导出到Text有两种方式,


一、TextIo

		TextIO textIO;
        container line,line1;
        str filepath;
        Dialog dialog;
        DialogField dialogFileName;
        FileIoPermission permission;
        container confilter =['.txt','*.txt'];
        InventTable _inventtable;

        filepath = WinAPI::getSaveFileName(
        0,
        confilter,
        "",
        "Save As",
        "",
        "Untitled")
        #File
        ;
        try
        {
            new FileIoPermission(filepath, #io_write).assert();

            textIO = new TextIO(filepath, #io_write);
            textIO.outRecordDelimiter(#delimiterCRLF);
            textIO.outFieldDelimiter(' | ');// for semicolon seperator 对于分号分隔符
            if (!textIO || textIO.status() != IO_Status::Ok)
            {
            throw error("File cannot be opened.");
            }
            while select _inventtable
            {
            // Empty the container  清空容器
            line = connull();
            // Set the data into the container  将数据设置到容器中
            line = conins(line, 1, _inventtable.ItemId);
            line = conins(line, 2, _inventtable.NameAlias);
           
            // Write the container to the file  将容器写入文件
            textIO.writeExp(line);
            }
        }
        catch(Exception::Error)
        {
            error("You do not have access to write the file to the selected folder");
        }
        // Revert the access privileges  恢复访问权限
        CodeAccessPermission::revertAssert();

二、TextBuffer

	InventItemInventSetup   _InventItemInventSetup;
    InventTableModule       _InventTableModule;
    inventtable             _inventtable;
    bindata                 bindata;
    textbuffer              textbuffer;
    utcDateTime             GMTDateTime;
    str                     thisda;
    str                     ThisDa2
    ;

    textbuffer = new textbuffer();
    textbuffer.settext('');
    if(fieldDisplayMessage.value() != '')
    {
        while select _inventtable where _inventtable.ItemId == fieldDisplayMessage.value()
        {
            select firstOnly _InventTableModule
                where _InventTableModule.ItemId == _inventtable.ItemId
                    && _InventTableModule.ModuleType == ModuleInventPurchSales::Invent;

            _InventItemInventSetup = InventItemInventSetup::findDefault(_inventtable.ItemId);

            //select firstOnly _InventItemInventSetup where _InventItemInventSetup.ItemId == _inventtable.ItemId;

            textbuffer.appendtext(strfmt('%1\r\ | %2\r | %3\r | %4\r\n',
                _inventtable.itemid,
                _inventtable.NameAlias,
                _InventTableModule.UnitId,
                _InventItemInventSetup.MultipleQty));
        }
    }
    else
    {
        while select _inventtable
        {
            select firstOnly _InventTableModule
                where _InventTableModule.ItemId == _inventtable.ItemId
                    && _InventTableModule.ModuleType == ModuleInventPurchSales::Invent;

            _InventItemInventSetup = InventItemInventSetup::findDefault(_inventtable.ItemId);

            //select firstOnly _InventItemInventSetup where _InventItemInventSetup.ItemId == _inventtable.ItemId;

            textbuffer.appendtext(strfmt('%1\r\ | %2\r | %3\r | %4\r\n',
                _inventtable.itemid,
                _inventtable.NameAlias,
                _InventTableModule.UnitId,
                _InventItemInventSetup.MultipleQty));
            }
    }


    textbuffer.gettext();

    bindata = new bindata();
    bindata.setstrdata(textbuffer.gettext());
    GMTDateTime =  DateTimeUtil::getSystemDateTime();
    thisda = datetime2str(GMTDateTime);
    ThisDa2 = strAlpha(thisda);
    bindata.savefile(@"c:\temp\导出产品信息"+ThisDa2+".txt");

3、TextStreamIo

Public Static void main(Args args)
{
      TextStreamIo            writeStreamIO;
      Int lineNumber;
   
      //writeStreamIO = TextStreamIo::constructForWrite(0); // Code_Page = ANSI encoding.

      writeStreamIO = TextStreamIo::constructForWrite(); //Code_Page = UniCode encoding.

      writeStreamIO.outRecordDelimiter('\n');

      for(lineNumber =1; lineNumber <= 5; lineNumber++)
      {
              writeStreamIO.write(strFmt("Line number - %1", lineNumber ));
      }

      File::SendFileToUser(writeStreamIO.getStream(), @"C:\Test.txt");
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值