所以我一直在研究一个c#应用程序,它从excel文件读取数据并使用数据表将其加载到数据网格视图中。
然后我想将它插入到SQL表中,如果有可能从数据表中获取数据类型,我想出了一个有趣的问题,比如它是int,char,time还是date?所以我可以根据它自动生成一个SQL表,然后插入数据?
这是我如何将数据从excel导入数据表:
public void importExcel(string path, string sheetName) {
var excel = new LinqToExcel.ExcelQueryFactory(path);
excel.ReadOnly = true;
var companies = from a in excel.Worksheet(sheetName) select a;
var columnNames = excel.GetColumnNames(sheetName);
DataTable dtExcelRecords = new DataTable();
foreach (var columnName in columnNames)
{
dtExcelRecords.Columns.Add(columnName);
}
foreach (var row in companies)
{
DataRow dr = dtExcelRecords.NewRow();
foreach (var columnName in columnNames)
{
dr[columnName] = row[columnName];
}
dtExcelRecords.Rows.Add(dr);
}
dataGWseznam.DataSource = dtExcelRecords;
}
答案 0 :(得分:0)
可以:
我认为我的问题是你为什么需要从代码中创建SQL Server表?通常,从excel导入数据时,您知道数据的格式是什么(在Excel文件中),并且您已经在数据库中有一个SQL Server表,您将在其中存储导入的数据。
如果您已有数据库表,那么完成您尝试执行的操作的最简单方法是使用Visual Studio工具从数据库表中自动创建DataSet。 DataSet本质上是DataTable的集合。在您的情况下,DataSet将只包含您要插入数据库的一个表。您将从导入过程中获取已知的结构化数据,并将其映射到DataTable,DataTable是从数据库表构建的。使用Visual Studio创建这些强类型DataSet的便利之处在于,一旦使用Linq导入过程中的数据填充DataTable并验证数据,将数据发送到数据库就像调用一样简单:
yourTableAdapter.Update(yourDataTable);
当您创建DataSet时,Visual Studio创建TableAdapter,并负责从数据库获取数据。 DataSet有各种各样的教程,所以请阅读并查看是否适合您 - link
最后,我不确定您是否考虑过使用DataTables的优秀替代方案。您可能偶然发现了DataTables并且不知道替代品是什么。使用DataTables / DataSets / DataAdapter将被认为是旧的'做事的方式。一个新的'进出数据库的方式是使用Microsoft的Entity Framework。这本身就是一个很大的话题,所以我想让你看看。