Excel数据导入(C#)
2015-06-03 00:30
816 查看
这种需求还是很多,感觉是因为天朝很多三四五六七八线城市的(没去过大城市啊)企业还有政府部门还都处于试图脱离文件存储,但是历史数据大量存在于Excel表格之中的阶段。(纸质文件就不知道怎么解决了,手工录入吧,反正大天朝不缺人)
最近做了一些,试图写写。
System.Data.SqlClient.SqlbulkCopy:针对MSSQL。
别的数据库再议。
要确认Excel列的数据类型,要不没法玩。建议统一在Excel中处理成文本数据。
ExcelDataReader:
改明儿再写,挺简单的。。
导入数据之SqlbulkCopy:
最近做了一些,试图写写。
工具:
ExcelDataReader:https://github.com/ExcelDataReader/ExcelDataReader,不用太考虑内存,简单粗暴。System.Data.SqlClient.SqlbulkCopy:针对MSSQL。
别的数据库再议。
思路方面:
Created with Raphaël 2.1.2开始配置映射读取数据校验数据导入数据读取结束?结束yesno实现
映射关系要确认Excel列的数据类型,要不没法玩。建议统一在Excel中处理成文本数据。
[code]class ExcelColumn { public string name {get;set;} public string datatype {get;set;} } Dictionary<ExcelColumn, string> ExcelToDbMap
ExcelDataReader:
改明儿再写,挺简单的。。
导入数据之SqlbulkCopy:
[code]using System.Data; using System.Data.SqlClient; public static bool Import(Dictionary<string, string> map, DataTable dt, string tablename, int batch = 5000, out string message) { bool res = true; message = ""; using (SqlConnection conn = new SqlConnection("我是数据库连接字符串")) { conn.Open(); using (SqlTransaction trans = conn.BeginTransaction()) { try { using (SqlBulkCopy bulk = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, trans)) { foreach (var s in map) {bulk.ColumnMappings.Add(s.Key,s.Value);} bulk.BatchSize = batch; bulk.DestinationTableName = tablename; bulk.WriteToServer(dt); trans.Commit(); } } catch (Exception ex) { trans.Rollback(); message = ex.ToString(); res = false; } } } return res; }
最后
祝大家生活愉快。相关文章推荐
- c# 中将一个方法的名称作为另一个方法的参数
- Part 72 to 81 Talking about Dictionary and List collection in C#
- c#输出文件名、行号、函数名、列号
- C# ICSharpCode.SharpZipLib
- C#/.NET code
- C#代码小记
- C#中用后台代码实现向XML文档中追加内容
- [C#基础]线程学习笔记(一)
- 免费电子书:C#代码整洁之道
- Image Processing using C#
- C# Serializable
- C#后台代码创建XML文档
- C# LayoutKind
- C#中的using(){}
- c# 动态调用webservice 转录一下
- 寒風的C#之旅之面向对象的课后习题
- C# 文本框禁止复制粘贴、只能输入数字
- [深入学习C#]匿名函数、委托和Lambda表达式
- 【C#】利用反射机制创建对象
- [C#] 语法之Attribute