1

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);
                }

            }
        }
4

1 に答える 1

1

Importクラスの最後に別の固定幅レコードを追加することでこれを考え出し、これを使用してPath.GetFileName(). その後、必要に応じてこれをクラスに渡すことができます。

于 2011-11-07T15:53:13.930 に答える