【问题标题】:Product CSV file with Header带有标题的产品 CSV 文件
【发布时间】:2015-01-23 22:03:49
【问题描述】:

是否有可能从 impex 脚本中将标头值不显示为注释?

我的意思是,而不是我最终的 CSV 看起来像这样:

# product_id|name|product_url
YG3243H|My Product|/products/my-product
...

看起来像这样:

product_id|name|product_url
YG3243H|My Product|/products/my-product
...

这将是一项常规工作,所以我真的想避免做任何后期处理工作。 这可能吗?

【问题讨论】:

    标签: csv export export-to-csv hybris


    【解决方案1】:

    是的,你可以!使用ImpexReaderincludeExternalData 方法。您还可以将它与更可定制的CSVReader 一起使用。

    使用这两种解决方案,您都可以设置linesToSkip 参数。假设您的标题位于第一行,您可以将其设置为 1

    如果第一列包含数据,不要忘记将 columnOffset 设置为 -1,因为 impex 通常从第 0 列开始,因此数据通常从第 1 列开始。

    您可能还想将delimiter 参数设置为|,因为默认值为;


    导入

    使用 CSVReader

    INSERT_UPDATE Product;code[unique=true];...
    "#% CSVReader reader = new CSVReader( ImpExManager.class.getResourceAsStream(""myDataFile.csv""), ""utf-8"" );"
    "#% impex.includeExternalData( reader, 1, -1 );"
    

    仅限 ImpexReader

    INSERT_UPDATE Product;code[unique=true];...
    "#% impex.includeExternalData(ImpExManager.class.getResourceAsStream(""myDataFile.csv""), ""utf-8"", ''|'', 1, -1 );"
    

    导出

    您不能“取消注释”标题,但可以跳过它。

    "#% impex.setTargetFile( ""file.csv"", false, 1, -1 );"
    

    如果需要,您也可以通过 Java 执行此操作,请查看 Export API

    false 表示标题作为注释写入目标数据文件的第一行

    更多详情请查看ImpEx API

    【讨论】:

    • 感谢您的回答!但这仅适用于“导入”过程,对吗?有没有办法为“导出”过程进行这种自定义?
    • @julioarmandof 是的,它是用于导入的,我已经为导出进行了编辑。虽然它可能不是你想要的......
    猜你喜欢
    • 2018-10-21
    • 2016-03-16
    • 1970-01-01
    • 2012-11-26
    • 2018-11-09
    • 1970-01-01
    • 2017-10-15
    • 2014-11-23
    • 2012-12-31
    相关资源
    最近更新 更多