表格数据交换格式

时间:2013-05-10 17:03:10

标签: c# java csv format spreadsheet

背景:

我在Asp.Net(C#)Web应用程序中使用CSV作为数据交换格式。该文件通常用于批量上传请求。它一直工作到现在,它仍然有效。

然而,在研究文化时,我们发现csv文件存在许多问题。其中一个最大的问题是分离器是由区域设置决定的。当用户在Ms Excel中编辑文件时会发生这种情况。例如,分隔符在美国使用逗号,在欧洲某些地区使用分号。

我已经搜索了一段时间,我没有找到任何银弹来处理这种情况。现在我很想知道:

  1. 有没有什么好方法可以处理CSV文件中的分隔符定义?

  2. 是否有更好的数据交换格式,这是规范的不变文化:

    • 文件是纯文本(不是ms excel xlsx等编码文件)
    • 这是不变的文化。我不是要处理小数分隔符,但至少在分隔符
    • 处不变
    • 电子表格应用程序(例如Ms Excel
    • )支持此功能
    • (可选)可以通过OleDb引擎读取
  3. 或者,如果有的话,使用平面文件进行表格数据交换是否有好的做法?

    更新

    到目前为止,这里是给定解决方案的优缺点摘要。

    1. CSV(通常也用于表示分隔的平面文件):

      优点:

      • 受许多处理器支持,例如Excel和OleDb
      • 易于阅读
      • 使用记事本轻松操作

      缺点:

      • 使用ms excel进行编辑时出现分隔符文化问题
      • 需要转义或处理分隔符
    2. XML:

      优点:

      • 受许多处理器支持,例如Excel和xml序列化程序
      • 使用记事本轻松操作
      • 代表结构格式

      缺点:

      • 在excel中处理时需要额外处理
      • 使用标记在xml
      • 中产生更多内容
    3. JSON:

      优点:

      • 代表结构格式
      • 使用记事本轻松操作

      缺点:

      • 电子表格处理器(例如excel(需要确保)
      • )不支持本机

4 个答案:

答案 0 :(得分:2)

简单替换为CSV可以是JSON - 这是一种非常简单的格式,在不同平台上提供了大量支持。

与CSV相关的问题的主要好处是它没有它们 - 它不依赖于文化。

它也有缺点,但它们与CSV共享(例如,没有数据类型)。

答案 1 :(得分:2)

XML是比CSV更好的数据交换方法。

  1. 语法规则很明确。 XML标准由具有丰富的数据交换经验的国际委员会制定并达成一致。 CSV是一种临时交换格式,更多是通过实践而非协议定义的。
  2. 字符集规则清晰。 Unicode及其各种编码也由国际委员会标准化。
  3. 从程序中发送XML非常简单,并且有大量的库可以帮助处理诸如字符集之类的难题。
  4. 阅读XML也很简单。有大量的库可以帮助解决棘手的问题。 Microsoft Excel和大多数商业数据库将读写XML文件。

答案 2 :(得分:1)

您可以将整个文件读入string _var,然后应用String.Split()函数来获取一个数组,指定您需要的任何分隔符集char。然后可以将数组插入到数据库中,或者转换为与Excel Lib对应的DataTable / DataViewRange对象(注意:此解决方案与C#实现有关)

答案 3 :(得分:1)

使用tab作为分隔符是一个简单的开关,大多数库似乎都支持读取或写入,并且可以使用Excel。