Excel 保存不带空格的 CSV

标签 excel csv

我有一个 Excel 电子表格,可以生成应用程序中使用的 CSV 脚本。脚本必须采用非常特定的格式,并且我以 XLSX 格式保存主文件,其中包含 protected 工作表和数据验证以保存 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”,空白之后的所有行都显示为“END”,这是所需要的。问题是现在保存 CSV 文件时,它总是有 1048576 行,所有底部行都包含分隔符 ",,,,"。这不起作用,CSV 文件需要在“END”行之后停止。有没有办法编写公式,导致 Excel 在保存到 CSV 时忽略评估为空白的单元格,或者在 Excel 中保存到 CSV 的另一种方法将忽略所有评估为空白的行?

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

在寻找答案时,我发现了这个链接,它是相似的,但不一样:
Saving Excel data as csv with VBA - removing blank rows at end of file to save

由于我拥有的“空白”是事件行,因为它们包含公式,因此这种方法不起作用。

最佳答案

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

否则,一个简单的解决方法可能是创建一个小的后 Excel/预处理脚本 - 可能使用批处理文件 - Batch / Find And Edit Lines in TXT file - 或任何小型脚本语言中的类似解决方案以删除多余的行。

关于Excel 保存不带空格的 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31030439/

相关文章:

c# - 通过 .net 将 excel 列格式化为 "yyyy-MM-dd"

excel - 传递具有从另一个用户定义函数返回的值的数组

ruby-on-rails - FasterCSV:读取远程 CSV 文件

javascript - 匹配字符串中的确切单词

excel - 在vbscript中读取csv文件

excel - sumif 其中行范围由另一个单元格确定

excel公式根据两个条件选择列值

excel - VBA根据数据透视表中的背景颜色更改字体颜色

c# - CsvHelper 不将数据写入内存流

python - 从文本文件中识别列表