Excel不带空格保存CSV

Excel不带空格保存CSV,excel,csv,Excel,Csv,我有一个Excel电子表格,可以生成应用程序中使用的CSV脚本。脚本必须采用非常特定的格式,我用XLSX格式保存了一个主控文件,带有受保护的工作表和数据验证,以保存CSV,而不是直接编辑CSV,因为直接编辑CSV可能会导致错误 问题是脚本几乎可以是任意长度的。每行的左列只能是一组特定值中的一个,最后一行必须显示“END”。在没有VBA的情况下,我唯一可以做到这一点的方法是在A列中使用以下公式,从第7行(前6行是标题信息)到第1048576行(最后一行Excel),并在A列锁定的情况下保护工作表:

我有一个Excel电子表格,可以生成应用程序中使用的CSV脚本。脚本必须采用非常特定的格式,我用XLSX格式保存了一个主控文件,带有受保护的工作表和数据验证,以保存CSV,而不是直接编辑CSV,因为直接编辑CSV可能会导致错误

问题是脚本几乎可以是任意长度的。每行的左列只能是一组特定值中的一个,最后一行必须显示“END”。在没有VBA的情况下,我唯一可以做到这一点的方法是在A列中使用以下公式,从第7行(前6行是标题信息)到第1048576行(最后一行Excel),并在A列锁定的情况下保护工作表:

   =IF(AND(ISBLANK(B368),NOT(ISBLANK(B367))),"END",IF(ISBLANK(B368),"",A367))
这使得A列中的最后一行显示为“END”,后面的所有行都为空,这是所需的。问题是,现在保存CSV文件时,它将始终有1048576行,所有底部的行都包含分隔符“,,,,”。这将不起作用,CSV文件需要在“结束”行之后停止。是否有一种方法可以编写公式,使Excel在保存到CSV时忽略计算结果为空的单元格,或者有另一种方法可以在Excel中保存到CSV,忽略计算结果为空的所有行

注意:我已经有了一个VBA解决方案,可以在我自己的机器上使用(它将数据复制到“结束”,以纯文本格式粘贴到新工作表中,然后用原始工作表的名称保存为CSV)。然而,我想分享这张表,在我的公司里,绕过安全限制来分享宏是一件痛苦的事。所以我正在寻找一种方法,如果可能的话,在没有宏的情况下可以实现

在寻找答案的过程中,我发现了这个链接,它很相似,但不尽相同:


由于我的“空白”是活动行,因为它们包含公式,因此此方法不起作用。

手动删除行/列将用于重置大小,正如GSerg在另一个问题中所指出的那样。或者,也可以按照GSserg的建议,在保存之前将数据复制到新工作表中


否则,一个简单的解决方法可能是创建一个小的post excel/预处理脚本(可能使用批处理文件)或任何小型脚本语言中的类似解决方案来删除多余的行。

正如您所发现的,零长度文本单元格与空单元格不同(您可以使用函数
=ISBLANK()测试差异)
)。如果排除了宏,为什么不能手动删除列A中“结束”单元格后的单元格?您甚至可以将
=IF(…,“END”,IF(…,“,…)
中的“”更改为一些独特的字符,例如“@@@@”或“Delete Me”(删除我),以帮助记忆。这是我目前所做的事情,但如果有需要较少手动干预的内容,则对我和与我共享它的人来说会更容易。它还可以最大限度地减少错误,例如在保存之前忘记删除,而是保存整个工作表。另外,如果我们需要修改一个已经存在的脚本来添加更多的步骤,最好不必重新填充公式。