是否可以使用多标签/表格的csv?

hel*_*mp9 22 c# csv asp.net excel

我正在调用Web服务,来自Web服务的数据采用csv格式.如果我尝试在xls/xlsx中保存数据,那么我会在工作簿中获得多个工作表.那么,如何在c#中使用多个tab/sheet保存数据.

我知道带有多个标签的csv是不实用的,但有没有任何该死的方式或任何库在csv中保存数据与多个标签/表?

Kei*_*thS 15

CSV,作为文件格式,假设一个"数据表"; 在Excel术语中,这是一张工作簿.虽然它只是纯文本,并且您可以按照您想要的任何方式进行解释,但"标准"CSV格式不支持您的主管的想法.

你可以用几种方法来捏造你想要的东西:

  • 为每个工作表使用不同的文件,具有相关但不同的名称,如"Book1_Sheet1","Book1_Sheet2"等.然后,您可以在第一个下划线之前按文本查找相关文件组.这是最容易实现的,但是要求用户按照逻辑"工作簿"来处理多个文件,如果在混乱中丢失了,那么您就丢失了这些数据.

  • 执行上述操作,并将文件"压缩"为可以移动的单个存档.你保持上述选项的纯CSV优势,加上一个文件移动而不是几个文件的便利,但是必须压缩/解压缩存档以获取实际文件的缺点.为了减轻痛苦,如果您使用的是.NET 4.5,则可以访问内置的ZipFile实现,如果不是,则可以使用开源DotNetZip或SharpZipLib,其中任何一个都允许您以编程方式创建和使用标准的Windows ZIP文件.您还可以使用几乎通用的.tar.gz(aka .tgz)组合,但您的用户需要您的程序或第三方压缩工具(如7Zip或WinRAR)才能从一组导出的CSV中创建存档.

  • 实现准CSV格式,其中空行(仅包含换行符)充当"制表符分隔符",并且您的解析器将期望新的列标题后跟新配置中的数据行.CSV的其他使用者可能无法读取此标准CSV的变体,因为它不符合预期的文件格式,因此我建议您不要使用".csv"扩展名,因为它会使用户期望混淆和挫败能够在电子表格等其他应用程序中打开它.


Jon*_*nna 6

如果我尝试将数据保存在xls / xlsx中,那么我在工作簿中会得到多个工作表。

您的答案在您的问题中,请不要使用text / csv(最肯定不能做多个工作表,甚至不能做一张工作表; text / csv中没有工作表之类的东西,尽管有些像Excel或Calc这样的应用程序选择将其导入具有表格的格式),但另存为xls,xlsx,ods或具有表格的其他格式。

XLSX和ODS都比text / csv复杂得多,但它们各自可能是各自格式集中最简单的。

  • CSV 中不能有多个工作表,因为 CSV 没有工作表。 (2认同)
  • 请您的主管指向https://www.ietf.org/rfc/rfc4180.txt中的位,该位显示如何指定工作表。他们将无法,因为它不存在。这就像问如何在CSV上打开声音一样。同时,XLSX文件在内部是一些相关XML和文本文件的zip文件。它们并不是很容易以编程方式构建,但是也不是很难。 (2认同)

Kre*_*dic 5

我已经使用这个库一段时间了,

https://github.com/SheetJS/js-xlsx

在我的项目中,从以下格式导入数据和结构:xls(x)、csv 和 xml,但您肯定也可以保存为这些格式(全部来自客户端)!

希望能帮到你,看看在线演示,

http://oss.sheetjs.com/js-xlsx/

查看源代码或在 GH 上提交问题?但我认为你必须自己完成大部分编码