x 個のファイルを含むディレクトリを反復処理し、各ファイルをプログラム内のオブジェクトにインポートするアプリを作成しました。「支払い」であるファイルごとにクラスのインスタンスを作成し、FileHelpers ライブラリはファイルの各行を新しいレコードとして読み取り、リストに入れます。ファイルが「info」の場合、それらは単純に事前設定されたディレクトリに移動されます。ファイルの名前をリストの最後に追加するか、これを変数として含めるだけですか?
ファイルの名前を知る必要があります。x 個のファイル内の「支払い」のそれぞれが 1 つの固定幅のテキスト ファイルに結合されて、従来の住宅管理システムに読み込まれるためです。
詳細情報: 固定幅ファイルを作成するとき、List<Payment>
PLUS 内の各支払いを、元のファイルの名前とともに出力する必要があります。FileHelpers/C# の世界でこれを行う方法がわかりません:(
EG (表示目的のヘッダー - エクスポート ファイルでは不要)
PAYMENTID PAYMENTAMOUNT REFERENCE DATE FILETYPE FILENAME
011102010 000000010000 20148366 26102011 PO SHGR1234.PO
011102011 000000020000 20148367 26102011 PP SHGF6585.PP
011102012 000000030000 20148368 26102011 DD SHGI9854.DD
何か案は?以下はいくつかのコードスニペットです...
更新 - FileHelpers lib = http://www.filehelpers.com/
更新 2 - テキスト ファイルをループして支払いを受けるために使用されるコード
public List<SundryPayment> getOAPayments()
{
FileHelperEngine engine = new FileHelperEngine(typeof(SundryPayment));
res = (SundryPayment[])engine.ReadFile(getFilePath());
foreach (SundryPayment record in res)
{
OAPaymentsList.Add(record);
}
return OAPaymentsList;
}
更新 2 - ファイルをロードするコード
public List<object> getFiles()
{
List<object> obj = new List<object>();
foreach (string file in files)
{
fileExt = Path.GetExtension(file).ToUpper();
filePath = Path.GetFullPath(file).ToUpper();
fileName = Path.GetFileNameWithoutExtension(file).ToUpper();
fullFileName = Path.GetFileName(file).ToUpper();
fileFund = fileName.Substring(0, 4).ToUpper();
if (fileExt == ".DIR" || fileExt == ".ERR" || fileExt == ".CRF" || fileExt == ".STA")
{
//Create Info File
InfoFile infofile = new InfoFile(filePath);
obj.Add(infofile);
}
else if (fileExt == ".PO" || fileExt == ".PP" || fileExt == ".TDC" || fileExt == ".TCC" || fileExt == ".DD" || fileExt == ".CSH" || fileExt == ".CQE"
|| fileExt == ".PZ")
{
if (fileFund == "SHGS" || fileFund == "GGEN")
{
//Create OA Payment File
OAPaymentFile oafile = new OAPaymentFile(filePath);
obj.Add(oafile);
}
else if (fileFund == "SHGF")
{
InfoFile infofile = new InfoFile(filePath);
obj.Add(infofile);
}
else
{
//Create AH Payment File
AHPaymentFile ahfile = new AHPaymentFile(filePath);
//Console.WriteLine("Object Created: {0}", filePath);
obj.Add(ahfile);
}
}
}
return obj;
}
更新 2 - 固定幅ファイルの作成に使用される (プロトタイプ) コード。このファイルに paymetns の元のファイル名を入れる必要があります
public new void Create()
{
string fileToCreate = Path.Combine("\\\\san\\ict\\allpay\\test\\", "cash.txt");
using (StreamWriter sw = new StreamWriter(fileToCreate))
{
foreach (Payment r in ArchousePayments)
{
string archouseref = r.TenancyRef + r.SubAccount + r.CheckDigit;
string firstamount = r.AmountPaid.Replace(".", "");
string amount = firstamount.PadRight(10, 'x');
string transcode = "ALPY";
string date = r.PaymentDate.Substring(0, 2) + r.PaymentDate.Substring(3, 2) + r.PaymentDate.Substring(6, 4);
string siteref;
string comment;
sw.WriteLine(archouseref + amount + transcode + date + amount.Length);
}
}
}