文档章节

处理CSV文件中的逗号

j
 javail
发布于 01/24 21:56
字数 831
阅读 127
收藏 0

我正在寻找有关如何处理正在创建的csv文件的建议,然后由我们的客户上传,并且该值可能带有逗号(例如公司名称)。

我们正在研究的一些想法是:带引号的标识符(值“,”值“,”等)或使用|。 而不是逗号。 最大的问题是我们必须使其变得容易,否则客户将无法做到。


#1楼

添加对Microsoft.VisualBasic的引用(是的,它说是VisualBasic,但它也可以在C#中工作-请记住,最后都只是IL)。

使用Microsoft.VisualBasic.FileIO.TextFieldParser类分析CSV文件,这是示例代码:

 Dim parser As TextFieldParser = New TextFieldParser("C:\mar0112.csv")
 parser.TextFieldType = FieldType.Delimited
 parser.SetDelimiters(",")      

   While Not parser.EndOfData         
      'Processing row             
      Dim fields() As String = parser.ReadFields         
      For Each field As String In fields             
         'TODO: Process field                   

      Next      
      parser.Close()
   End While 

#2楼

nuget提供了一个库,用于处理几乎任何格式良好的CSV(.net) -CsvHelper

映射到类的示例:

var csv = new CsvReader( textReader );
var records = csv.GetRecords<MyClass>();

读取各个字段的示例:

var csv = new CsvReader( textReader );
while( csv.Read() )
{
    var intField = csv.GetField<int>( 0 );
    var stringField = csv.GetField<string>( 1 );
    var boolField = csv.GetField<bool>( "HeaderName" );
}

让客户端驱动文件格式:
,是标准字段定界符, "是用于转义包含定界符,引号或行尾的字段的标准值。

要将(例如) #用于字段,将'用于转义:

var csv = new CsvReader( textReader );
csv.Configuration.Delimiter = "#";
csv.Configuration.Quote = ''';
// read the file however meets your needs

更多文件


#3楼

您可以使用替代的“定界符”,例如“;” 或“ |” 但最简单的可能只是引用(大多数(体面的)CSV库和大多数体面的电子表格支持)。

有关CSV分隔符的更多信息以及用于描述分隔符和引用的标准格式的规范,请参见此网页


#4楼

您可以像这样读取csv文件。

这利用了分割并照顾了空间。

ArrayList List = new ArrayList();
static ServerSocket Server;
static Socket socket;
static ArrayList<Object> list = new ArrayList<Object>();


public static void ReadFromXcel() throws FileNotFoundException
{   
    File f = new File("Book.csv");
    Scanner in = new Scanner(f);
    int count  =0;
    String[] date;
    String[] name;
    String[] Temp = new String[10];
    String[] Temp2 = new String[10];
    String[] numbers;
    ArrayList<String[]> List = new ArrayList<String[]>();
    HashMap m = new HashMap();

         in.nextLine();
         date = in.nextLine().split(",");
         name = in.nextLine().split(",");
         numbers = in.nextLine().split(",");
         while(in.hasNext())
         {
             String[] one = in.nextLine().split(",");
             List.add(one);
         }
         int xount = 0;
         //Making sure the lines don't start with a blank
         for(int y = 0; y<= date.length-1; y++)
         {
             if(!date[y].equals(""))
             {   
                 Temp[xount] = date[y];
                 Temp2[xount] = name[y];
                 xount++;
             }
         }

         date = Temp;
         name =Temp2;
         int counter = 0;
         while(counter < List.size())
         {
             String[] list = List.get(counter);
             String sNo = list[0];
             String Surname = list[1];
             String Name = list[2];
             for(int x = 3; x < list.length; x++)
             {           
                 m.put(numbers[x], list[x]);
             }
            Object newOne = new newOne(sNo, Name, Surname, m, false);
             StudentList.add(s);
             System.out.println(s.sNo);
             counter++;
         }

#5楼

如果您对关于如何一般地解析文件的更具教育意义的练习感兴趣(以CSV为例),则可以查看Julian Bucknall的这篇文章 。 我喜欢这篇文章,因为它可以将事情分解成更小的问题,这些问题要难得多。 首先创建一个语法,一旦有了良好的语法,将语法转换为代码是一个相对容易且有条理的过程。

本文使用C#,并在底部具有一个链接来下载代码。

本文转载自:https://ko.sofbug.com/question/3EDF

j
粉丝 5
博文 1123
码字总数 0
作品 0
深圳
私信 提问
Cocos数据篇[3.4](5) ——CSV文件解析

【唠叨】 在一个游戏中,通常会有很多怪物、关卡、技能等数据,这些数据不可能在代码里写死,一般都会使用配置文件保存,使用时再加载到内存。 CSV文件编辑起来十分简单,所以常常用来配置游...

shahdza
2015/02/18
0
0
Linux | 活用CLI命令行进行数据处理与探索 - 知乎

COMMAND LINE INTERFACE 即COMMAND LINE INTERFACE命令行模式,是在图形界面得到普及之前使用最为广泛的用户界面,也就是咱们平时看到的黑乎乎背景与绿油油文字系统界面。 我们常常习惯于使用...

数与码
2019/10/21
0
0
django 1.8 官方文档翻译: 3-5-1 使用Django输出CSV

使用Django输出CSV 这篇文档阐述了如何通过使用Django视图动态输出CSV (Comma Separated Values)。 你可以使用Python CSV 库或者Django的模板系统来达到目的。 使用Python CSV库 Python自带了...

apachecn_飞龙
2015/09/04
0
0
PHP tools:CSV文件处理

生成的CSV文件 一、生成CSV文件 1、主要函数: fputcsv—将行格式化为 CSV 并写入文件指针 int fputcsv ( resource $handle , array $fields [, string $delimiter = ',' [, string $enclosu......

Nosee123
2018/03/28
0
0
[转]Excel导入到MySQL

参考网页+ http://www.cnblogs.com/latifrons/archive/2012/09/07/2675141.html+ http://my.oschina.net/xsh1208/blog/470245 引言 为了从 MSSQL (MS SQL server 2008r2) 转移数据库到 MySQ......

不避风云
2016/05/21
121
0

没有更多内容

加载失败,请刷新页面

加载更多

上海哪里有开咨询费发票-上海新闻网

上海哪里有开咨询费发票【電徴同步;135 * 64 99 * 81 96】陈生,诚、信、合、作,保、真、售、后、保、障、长、期、有、效。adb的全称为Android Debug B...

票微fp2090
18分钟前
25
0
绍兴哪里有开发票

绍兴哪里有开发票【電徴同步;132 * 29 30 * O5 68】李生,诚、信、合、作,保、真、售、后、保、障、长、期、有、效。adb的全称为Android Debug Bridge,...

程序大1
50分钟前
33
0
盐城哪里有开发票

盐城哪里有开发票【電徴同步;132 * 29 30 * O5 68】李生,诚、信、合、作,保、真、售、后、保、障、长、期、有、效。adb的全称为Android Debug Bridge,...

8741752
54分钟前
29
0
苏州哪里有开发票

苏州哪里有开发票【電徴同步;132 * 29 30 * O5 68】李生,诚、信、合、作,保、真、售、后、保、障、长、期、有、效。adb的全称为Android Debug Bridge,...

2468643
56分钟前
35
0
廊坊哪里有开发票

廊坊哪里有开发票【電徴同步;132 * 29 30 * O5 68】李生,诚、信、合、作,保、真、售、后、保、障、长、期、有、效。adb的全称为Android Debug Bridge,...

68735
今天
23
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部