我需要使用源数据(基本上是加载了不同列和数据的数据库表或 csv 文件),然后根据源数据以不同的格式(文本、excel、pdf 等)创建不同的文件(让我们称之为目标文件)使用从源数据中的列到目标文件中的列的映射。格式和编号。对于不同的目标文件,列的数量会有所不同,但所有的源数据都是相同的。如果将来需要创建新的目标文件,解决方案设计应该像为新文件添加另一个模板并添加到现有模板集一样简单。
请对上述方法有任何想法吗?源数据 - 可以是 SQL 数据库表或 CSV 文件。需要用 C#.NET 编写
我需要使用源数据(基本上是加载了不同列和数据的数据库表或 csv 文件),然后根据源数据以不同的格式(文本、excel、pdf 等)创建不同的文件(让我们称之为目标文件)使用从源数据中的列到目标文件中的列的映射。格式和编号。对于不同的目标文件,列的数量会有所不同,但所有的源数据都是相同的。如果将来需要创建新的目标文件,解决方案设计应该像为新文件添加另一个模板并添加到现有模板集一样简单。
请对上述方法有任何想法吗?源数据 - 可以是 SQL 数据库表或 CSV 文件。需要用 C#.NET 编写
我喜欢使用我的 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;
}
}