我正在尝试创建一个具有以下格式的 CSV 文件(用于导入 MYOB AccountRight 财务软件):
InvoiceNum1,Line1,...
InvoiceNum1,Line2,...
InvoiceNum2,Line1,...
InvoiceNum2,Line2,...
InvoiceNum3,Line1,...
....
所以基本上每张发票都用一个空行分隔,每张发票可以有一个或多个发票项目。我目前编写了一个执行以下格式的查询(即没有空行):
InvoiceNum1,Line1,...
InvoiceNum1,Line2,...
InvoiceNum2,Line1,...
InvoiceNum2,Line2,...
InvoiceNum3,Line1,...
这个查询是一个联合查询,将两个普通的子查询组合在一起。
不幸的是,我正在导入的软件非常愚蠢,并将其全部视为一张发票。所以我需要一种方法来在每张发票之间插入空白行。在我导出 CSV 之前,我对查询应用了过滤器(因此我可以选择一个日期范围),这意味着我设法在查询中插入的任何空白行都会被过滤掉,因为它们不包含日期。
我目前计划的解决方案是编写一个单独的程序,用户可以使用该程序在将 CSV 文件导入 MYOB 之前正确格式化它。这显然是一个巨大的 hack,如果可能的话,我更喜欢本机 Access 解决方案。
我使用的是 Access 2007,但可以升级/降级到其他版本(如果它能提供我需要的功能)。
如果您只是想在导出文件后在每一行之间添加一行,那么一种解决方案是在 Excel 中创建宏。通过在 Excel 中使用 VBA 调整自动生成的宏代码,您可以自动化所有过程,并在将来通过单击按钮使用相同的解决方案。
但是,如果您熟悉编程语言,那么使用 Python 等脚本语言操作文件可能会容易得多。
*CSV 文件由逗号分隔,因此是“逗号分隔值”。
不幸的是,我找到的唯一解决方案是编写一个程序(我使用 C#,但任何东西都可以)来遍历文件并在不同的发票之间输入更多的换行符。然后我在 Access 中编写了一些 VBA 代码,将查询导出到一个文件,然后在该文件上运行格式化程序,从而使最终用户看起来无缝。