using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
 
namespace 合併列印應用程式
{
    class FileConverter
    {
        private string content;
 
        public string[][] FileToTable(string Fname)
        {
            content = this.FileToString(Fname);
            char itemSegment = '\n';
            string[] rowTable = content.Split(itemSegment);
 
            string[] elementSegment = new string[] { "\n", "     ", "    ", "   ", "  ", " " };
            string[][] fullTable = new string[rowTable.Length][];
            for (int i = 0; i <= rowTable.Length - 1; i++)
            {
                fullTable[i] = rowTable[i].Split(elementSegment, StringSplitOptions.RemoveEmptyEntries);
            }
            return fullTable;
        }
 
        public string FileToString(string Fname)
        {
            StreamReader SFile = new StreamReader(Fname, Encoding.Unicode);
            content = SFile.ReadToEnd();
            SFile.Close();
            return content;
        }
    }
 
    class MergPrinter
    {
        private string[] Result;
 
        public MergPrinter(string strTemplate, string[][] strData)
        {
            MergPrintSetter setter = new MergPrintSetter(strTemplate, strData);
            Result = setter.getResult();
        }
 
        public MergPrinter(string[][] strData, string strTemplate)
        {
            MergPrintSetter setter = new MergPrintSetter(strTemplate, strData);
            Result = setter.getResult();
        }
 
        public void printMergInto(string Fname)
        {
            for (int Case = 0; Case < Result.Length; Case++)
            {
                StreamWriter ResultPut = new StreamWriter(Fname, true, Encoding.Unicode);
 
                ResultPut.Write(Result[Case]);
                this.putFiveEmpty(ResultPut);
 
                ResultPut.Close();
            }
        }
 
        private void putFiveEmpty(StreamWriter ResultFile)
        {
            for (int i = 1; i <= 5; i++)
                ResultFile.WriteLine("");
        }
    }
    class MergPrintSetter
    {
        private string Template;
        private string[][] Data;
        private string[] Result;
 
        public MergPrintSetter( string strTemplate, string[][] strData )
        {
            Data = strData;
            Template = strTemplate;
            Result = new string[Data.Length - 1];
            this.setResult();
        }
        public string[] getResult()
        {
            return Result;
        }
 
 
        private void setResult()
        {
            this.initializeResult();
            for (int Item = 1; Item < Data.Length; Item++)
            {
                int Case = Item - 1;
                Result[Case] = Template;
 
                for (int element = 0; element < Data[Item].Length; element++)
                {
                    Result[Case] = Result[Case].Replace(("${" + Data[0][element] + "}"), Data[Item][element]);
                }
            }
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            string[][] DataTxt;
            string TemplateTxt;
 
            FileConverter open = new FileConverter();
            DataTxt = open.FileToTable(args[1]);
            TemplateTxt = open.FileToString(args[3]);
 
            MergPrinter process = new MergPrinter(DataTxt, TemplateTxt);
            process.printMergInto(args[5]);
        }
    }
}
 
arrow
arrow
    全站熱搜

    你"留意"了嗎? 發表在 痞客邦 留言(0) 人氣()