2011-12-16 27 views
1

因此,目前我們的ERP/PSA軟件生成電子轉帳(電子轉帳).txt文件,其中包含銀行和員工銀行信息,然後發送給銀行。如何轉換電子轉帳的.txt文件中的數據

問題如下EFT File當前正在生成的格式是美國標準,不適用於加拿大銀行標準。但我有加拿大銀行的標準格式。

該文件的格式全部是關於文件中的列數以及它們包含的字符數(如果列中的數據沒有達到填充空格的字符數)。

因此,

1011234567Joe,Bloggs  1234567 

再舉例來說,可以說我嘗試變換到加拿大標準

A101Joe,Bloggs 1234567 1234567 

其中,例如「A」需要被加入到創紀錄的第一道防線。

我只是想知道如何去這樣的任務在C#

閱讀文本文件。 一行一行的解析數據中開始和字符結束的條件 給變量賦值 重建新的文件,這些變量與不同的排序和附加數據

回答

1

我認爲最好的方法是創建一個類來保存邏輯數據存在於文件中,並具有此類中用於解析給定格式的數據並將其保存爲給定格式的方法。

例如,假設下面的類:

public class EFTData 
{ 
    public string Name { get; set; } 
    public string RoutingNumber { get; set; } 
    public string AccountNumber { get; set; } 
    public string Id { get; set; } 

    public void FromUSFormat(string sLine) 
    { 
     this.Id = sLine.Substring(0, 3); 
     this.RoutingNumber = sLine.Substring(3, 7); 
     this.Name = sLine.Substring(10, 20); 
     this.AccountNumber = sLine.Substring(30, 7); 
    } 
    public string ToCanadianFormat() 
    { 
     var sbText = new System.Text.StringBuilder(100); 

     // Note that you can pad or trim fields as needed here 
     sbText.Append("A"); 
     sbText.Append(this.Id); 
     sbText.Append(this.RoutingNumber); 
     sbText.Append(this.AccountNumber); 

     return sbText.ToString(); 
    } 
} 

然後,您可以從美國文件讀取和寫入到加拿大文件,如下所示:

 // Assume there is only a single line in the file 
     string sLineToProcess = System.IO.File.ReadAllText("usin.txt"); 

     var oData = new EFTData(); 
     // Parse the us data 
     oData.FromUSFormat(sLineToProcess); 
     // Write the canadian data 
     using (var oWriter = new StreamWriter("canout.txt")) 
     { 
      oWriter.Write(oData.ToCanadianFormat()); 
     } 
1

我沒有我的IDE打開,所以我的語法可能是一個關鍵,但我會盡力指出你在正確的方向。無論如何,直接給你解決方案有多樂趣?

首先你會想要得到行的列表:

IEnumerable<string> lines = text.Split('\n'); 

你說的列沒有分隔符,而是有固定的寬度,但你沒有提到的地方列大小被定義。一般情況下,你會想,拉出各列的文本與

colText = line.Substring(startOfColumn, lengthOfColumn); 

對於你必須計算startOfColumn和lengthOfColumn,取決於列的位置和長度的每一列。

希望這對於您來說是一個足夠好的基礎。

1
var lines = File.ReadAllLines(inputPath); 
var results = new List<string>(); 
foreach (var line in lines) 
{ 
    results.Add(string.Format("A{0}", line)); 
} 
File.WriteAllLines(outputPath, results.ToArray()); 
相關問題