C#高效率导入Excel数据

//此方法可以一次导入百万数据
public int GetDevicesExel(string fileName, string users,
out string repIMEI)
{

int res = 0;

#region exel导入到Datatable

DataTable dt = new DataTable();

string strCon = "Provider=
Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=‘Excel
8.0;HDR=False;IMEX=1‘";

OleDbConnection conn = new
OleDbConnection(strCon);

OleDbDataAdapter myCommand;

conn.Open();

//返回Excel的架构,包括各个sheet表的名称,类型,创建时间和修改时间等 

DataTable dtSheetName =
conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null,
null, "Table" });

//包含excel中表名的字符串数组

string[] strTableNames = new
string[dtSheetName.Rows.Count];

for (int k = 0; k <
dtSheetName.Rows.Count; k++)

{

strTableNames[k] =
dtSheetName.Rows[k]["TABLE_NAME"].ToString();

}

for (int j = 0; j <
strTableNames.Length; j++)

{

//从指定的表明查询数据,可先把所有表明列出来供用户选择

string strExcel = "select * from [" +
strTableNames[j] + "]";

myCommand = new
OleDbDataAdapter(strExcel, strCon);

myCommand.Fill(dt);

}

#endregion

  

#region 填充虚拟表数据(列要和数据库的一致包括主键 主键可以随便写)
Devices
de = new Devices();
for (int i = 0; i < dt.Rows.Count;
i++)
{
int count =
Regex.Matches(dt.Rows[i][5].ToString(), @"\d").Count;
if
(count > 0)
{
continue;

}
if (dt.Rows[i][0].ToString() == "" ||
dt.Rows[i][0].ToString() == null)
{

continue;
}
DataRow dataRow =
dataTable.NewRow();
dataRow[0] = 5555; //DeviceID

dataRow[1] = dt.Rows[i][0].ToString(); //SerialNumber

dataRow[2] = ""; //DeviceName

dataRow[3] = "123456"; //DevicePassword

dataRow[4] = "";//CarUserName
dataRow[5] = "";//CarNum

dataRow[6] = "";//CellPhone
dataRow[7] = 1;
//Status
dataRow[8] =
dt.Rows[i][2].ToString(); //PhoneNum
dataRow[9] =
Utility.SafeInt(dt.Rows[i][1].ToString()); //Model

dataTable.Rows.Add(dataRow);

}
#endregion

SqlBulkCopy sqlBulkCopy = new
SqlBulkCopy(conString);
sqlBulkCopy.DestinationTableName =
"Devices";

if (dataTable != null &&
dataTable.Rows.Count != 0)
{

sqlBulkCopy.WriteToServer(dataTable); //开始添加数据
res = 1;
}

sqlBulkCopy.Close();

}

时间: 2025-01-10 09:29:37

C#高效率导入Excel数据的相关文章

SQL Server服务器上需要导入Excel数据的必要条件

SQL Server服务器上需要导入Excel数据,必须安装2007 Office system 驱动程序:数据连接组件,或者Access2010的数据库引擎可再发行程序包,这样就不必在服务器上装Excel了.

[已解决]C#批量高效率导入大数据到数据库[百万级以上]

将几百万条数据导入到数据库中,怎么样高效率的导入?下面我就介绍一个高效率的方法:1.将数据库文件(DB.csv)导入到DataTable中: /// <summary> /// 将CSV文件的数据读取到DataTable中 /// </summary> /// <param name="fileName">CSV文件路径</param> /// <returns>返回读取了CSV数据的DataTable</returns

asp.net采用OLEDB方式导入Excel数据时提示:未在本地计算机上注册&quot;Microsoft.Jet.OLEDB.4.0&quot; 提供程序&quot;

asp.net采用OLEDB方式导入Excel数据时提示:未在本地计算机上注册"Microsoft.Jet.OLEDB.4.0" 提供程序" 笔者在项目中做做了一个从Excel表格中导入数据的模块.大体上asp.net项目中导入Excel大体分成三类: 1)采用c#内置方案System.Data.OleDb(限制较小, 通用) 2)采用Excel的COM组件(会有版本问题) 3)采用伪Excel文件.即使用文本流的方式根据需求自己定义数据格式.同时在服务端进行反格式化 笔者采

C#导入Excel数据

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Data.OleDb; using test.App_Code; using System.Text.RegularExpressions; using Sy

(转)PLSQL Developer导入Excel数据

场景:近来在做加班记录的统计,主要是统计Excel表格中的时间,因为我对于Excel表格的操作不是很熟悉,所以就想到把表格中的数据导入到数据库中,通过脚本语言来统计,就很方便了!但是目前来看,我还没有完成最终统计的目的,只是将Excel中的数据导入到了数据库中了,所以未完待续! 最近处理将Excel数据导入Oracle的工作比较多.之前都是采用Sqlldr命令行导入的方式处理.每次导入不同格式的Excel表数据,都需要先把Excel文件由“.xls”格式转换为“.csv”格式,再手工根据Exce

windows命令行下导入excel数据到SQLite数据库

1.转换文件格式,防止中文乱码:将excel保存成"CSV(逗号分隔)(*.csv)"格式,关闭文件,用记事本打开刚才保存的.csv文件,然后另存为UTF-8格式文本.需要注意的是,经过这样的转换,数字也全变成文本了. 2.通过adb shell(adb.exe存放在android开发软件安装文件夹中,如 F:\Develope\Tools\adt-bundle-windows-x86\sdk\platform-tools\)更改sqlite数据库的使用权限.运行adb之前要先打开AV

Oracle导入excel数据快速方法

Oracle导入excel数据快速方法 使用PLSQL  Developer工具,这个可是大名鼎鼎的Oracle  DBA最常使用的工具.    在单个文件不大的情况下(少于100000行),并且目的表结构已经存在的情况下——对于excel而言肯定不会超过了,因为excel文件的最大行为65536——  可以全选数据复制,然后用PLSQL  Developer工具.    1  在PLSQL  Developer的sql  window里输入select  *  from  test  for 

结合bootstrap fileinput插件和Bootstrap-table表格插件,实现文件上传、预览、提交的导入Excel数据操作流程

1.bootstrap-fileinpu的简单介绍 在前面的随笔,我介绍了Bootstrap-table表格插件的具体项目应用过程,本篇随笔介绍另外一个Bootstrap FieInput插件的使用,整合两者可以实现我们常规的Web数据导入操作,导入数据操作过程包括有上传文件,预览数据,选择并提交记录等一系列操作. 关于这个插件,我在早期随笔<Bootstrap文件上传插件File Input的使用>也做了一次介绍,这是一个增强的 HTML5 文件输入控件,是一个 Bootstrap 3.x

导入Excel数据至数据库——思路整理

说明 背景: 导入Excel数据到数据库成为目前项目中很常用的技术,整理以前的实现发现:在原来系统中的导入,没有实现方法复用,如果要实现某一处数据的导入,需要将原来的代码复制过去.修修改改,实现过程较为复杂,实现类似的功能需要对原来的代码重新梳理,结合业务修改代码. 为了让每次相同的功能都不需要重复的开发,我们需要实现一种能够得到复用的程序功能. 目的: 如图所示 我们需要将Excel中的数据记录插入到DB的表中,如何实现? 转换 将Excel转换为List 将Excel转换为DataTable