我正在尝试从CSV文件中读取数据,但是我的CSV文件有许多空单元格用于不同的列。因此,我希望捕获这些空单元格,并将这些空值初始化为默认值-1。我试图遍历这些值,但由于某些原因,它部分有效,部分无效。我能做错什么呢?
//Some of the columns are still empty even though they were supposed to
//initialized to -1. While some others are initialized to -1.
public class DPdfView
{
public DPdfView()
{
//ReadExcel("t.csv");
}
public String ReadCSV()
{
String cont = null;
using (TextFieldParser parser = new TextFieldParser("t.csv"))
{
parser.TextFieldType = FieldType.Delimited;
parser.SetDelimiters(",");
while (!parser.EndOfData)
{
//Processing row
string[] fields = parser.ReadFields();
for (int i = 0; i < fields.Length; i++)
{
if (fields[i].Length == 0)
{
fields[i] = "\n" + "-1";
}
//Console.WriteLine(fields[4]);
}
String Value_DATE = fields[2];
String Booking_Date = fields[3];
String Transaction = fields[4];
String Reference = fields[7];
String Money_Out = fields[8];
String Money_In = fields[9];
String Balance = fields[14];
cont = cont + Value_DATE + "\n" + Booking_Date + "\n" + Transaction + "\n" + Reference + "\n" + Money_Out + "\n" + Money_In + "\n" + Balance;
}
}
return cont;
}
}//根据m.rogalski的建议,这就是我所得到的。-1被附加到同一行,而不是附加到下一行。
VALUE_DATE
BOOKING_DATE
TRANSACTION
REFERENCE
MONEY.OUT
MONEY.IN
AVAILABLE.BALANCE-1 // the -1 should be appended to the next line
2847899
KES
-1
10/10/2016
9/11/2016
5403.759/11/2016
9/11/2016
Opening Balance
-1
-1
-1
-112/10/2016
12/10/2016
Mobile Mpesa Transfer
-1
1533
-1
-117-10-2016
17-10-2016
ATM Withdrawal
6.29006E+11
1000
-1
-117-10-2016
17-10-2016
ATM Withdrawal
6.29118E+11
2000
-1
-117-10-2016
17-10-2016
Mobile Mpesa Transfer
-1
2083
-1
-117-10-2016
17-10-2016
Transfer from Mpesa
-1
0
4000
-118-10-2016
18-10-2016
Mobile Mpesa Transfer
-1
333
-1
-118-10-2016
18-10-2016
Mobile Mpesa Transfer
-1
733
-1
-121-10-2016
21-10-2016
ATM Withdrawal
5.04158E+15
1000
-1
-121-10-2016
21-10-2016
Mobile Mpesa Transfer
-1
433
-1
-121-10-2016
21-10-2016
Mobile Mpesa Transfer
-1
883
-1
-121-10-2016
21-10-2016
Transfer from Mpesa
-1
0
5000
-124-10-2016
24-10-2016
Mobile Mpesa Transfer
-1
1583
-1
-124-10-2016
24-10-2016
Mobile Mpesa Transfer
-1
2033
-1
-125-10-2016
25-10-2016
Mobile Internal Transfer
-1
10000
-1
-125-10-2016
25-10-2016
Mobile Mpesa Transfer
-1
2033
-1
-125-10-2016
25-10-2016
Mobile Mpesa Transfer
-1
373
-1
-125-10-2016
25-10-2016
Mobile Mpesa Transfer
-1
50983
-1
-127-10-2016
27-10-2016
Mobile Mpesa Transfer
-1
1183
-1
-128-10-2016
28-10-2016
ATM Withdrawal
5.04158E+15
20000
-1
-128-10-2016
28-10-2016
Mobile Mpesa Transfer
-1
1333
-1
-131-10-2016
31-10-2016
Mobile Mpesa Transfer
-1
783
-1
-11/11/2016
1/11/2016
Mobile Mpesa Transfer
-1
4533
-1
-11/11/2016
1/11/2016
Transfer from Mpesa
-1
0
3650
-12/11/2016
2/11/2016
Mobile Mpesa Transfer
-1
833
-1
-13/11/2016
3/11/2016
Mobile Mpesa Transfer
-1
2033
-1
-14/11/2016
4/11/2016
ATM Withdrawal
5.04158E+15
3000
-1
-14/11/2016
4/11/2016
Mobile Internal Transfer
-1
0
3000
-14/11/2016
4/11/2016
Mobile Mpesa Transfer
-1
10033
-1
-17/11/2016
7/11/2016
Mobile Airtime Puchase
-1
150
-1
-17/11/2016
7/11/2016
Mobile Mpesa Transfer
-1
1183
-1
-17/11/2016
7/11/2016
Mobile Mpesa Transfer
-1
12283
-1
-17/11/2016
7/11/2016
Mobile Mpesa Transfer
-1
1498
-1
-17/11/2016
7/11/2016
Mobile Mpesa Transfer
-1
283
-1
-17/11/2016
7/11/2016
Mobile Mpesa Transfer
-1
333
-1
-17/11/2016
7/11/2016
Mobile Mpesa Transfer
-1
5033
-1
-17/11/2016
7/11/2016
Mobile Mpesa Transfer
-1
568
-1
-17/11/2016
7/11/2016
Mobile Mpesa Transfer
-1
733
-1
-17/11/2016
7/11/2016
Transfer from Mpesa
-1
0
20100
-18/11/2016
8/11/2016
Mobile Mpesa Transfer
-1
2033
-1
-18/11/2016
8/11/2016
Mobile Mpesa Transfer
-1
383
-1
-18/11/2016
8/11/2016
Mobile Mpesa Transfer
-1
6533
-1
-18/11/2016
8/11/2016
Mobile Mpesa Transfer
-1
938
-1
-18/11/2016
8/11/2016
Transfer from Mpesa
-1
0
14000
-19/11/2016
9/11/2016
Closing Balance
-1
-1
-1
-1发布于 2017-02-02 20:29:20
你的假设是空意味着没有任何迹象。仍然可以有像CR,LF或许多其他标志。
尝试以下方法:
if (string.IsNullOrWhiteSpace(fields[i])) // (fields[i].Length == 0)
{
fields[i] = string.Format("{0}-1", Environment.NewLine);
}发布于 2017-02-02 20:33:09
尝试替换...
if (fields[i].Length == 0)
{
fields[i] = "\n" + "-1";
}有..。
if (String.IsNullOrEmpty(fields[i])) {
fields[i] = "-1";
}https://stackoverflow.com/questions/42001807
复制相似问题