Создание разных файлов из исходного кода в разных форматах с использованием настроенных шаблонов

Мне нужно использовать исходные данные (в основном таблицу базы данных с различными загруженными столбцами и данными или файл CSV), а затем создавать разные файлы (назовем их файлами назначения) в разных форматах (текст, Excel, PDF и т. Д.) На основе исходных данных. использование отображений из столбцов в исходных данных в столбцы в целевых файлах. Формат и нет. столбцов будет отличаться для разных файлов назначения, но исходные данные будут одинаковыми для всех. Если в будущем необходимо создать новый файл назначения, проект решения должен быть таким же простым, как просто добавление другого шаблона для нового файла и добавление к существующему набору шаблонов.

Любая идея на вышеуказанный подход, пожалуйста? Исходные данные - могут быть таблицей базы данных SQL или файлом CSV. Нужно писать в C#.NET

1 ответ

Мне нравится использовать мой CSV-ридер, который берет CSV-файл и помещает его в DataTable.

    public class CSVReader
    {

        public DataSet ReadCSVFile(string fullPath, bool headerRow)
        {

            string path = fullPath.Substring(0, fullPath.LastIndexOf("\\") + 1);
            string filename = fullPath.Substring(fullPath.LastIndexOf("\\") + 1);
            DataSet ds = new DataSet();

            try
            {
                if (File.Exists(fullPath))
                {
                    string ConStr = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}" + ";Extended Properties=\"Text;HDR={1};FMT=Delimited\\\"", path, headerRow ? "Yes" : "No");
                    string SQL = string.Format("SELECT * FROM {0}", filename);
                    OleDbDataAdapter adapter = new OleDbDataAdapter(SQL, ConStr);
                    adapter.Fill(ds, "TextFile");
                    ds.Tables[0].TableName = "Table1";
                }
                foreach (DataColumn col in ds.Tables["Table1"].Columns)
                {
                    col.ColumnName = col.ColumnName.Replace(" ", "_");
                }
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            return ds;
        }
    }
Другие вопросы по тегам