一.最近一直在调整去年以及维护去年开发的项目,好久没有在进行个人的博客了。每天抽了一定的时间在研究一些开源的框架,Drapper 以及NHibernate以及当前比较流行的SqlSuper框架 并进行对比当前的EF框架。各有优缺点。不多说了。

二.介绍一下批量导入程序的开发。

1.首先找到EXEL的文件的路径进行读取。

2.应用FileInfo进行读取,读取结束EXEL后将EXEL文件进行移动到其他的文件夹里面保存起来。

3.将FileInfo类用于典型的操作,如复制、移动、重命名、创建、打开、删除和追加到文件。

FileInfo类用于典型的操作,如复制、移动、重命名、创建、打开、删除和追加到文件。

4.许多FileInfo方法在您创建或打开文件时返回其他 I/O 类型。可以使用这些其他类型进一步操作文件。有关更多信息,请参见特定的FileInfo成员,如OpenOpenReadOpenTextCreateTextCreate

如果打算多次重用某个对象,可考虑使用 FileInfo的实例方法,而不是File类的相应静态方法,因为并不总是需要安全检查。

默认情况下,将向所有用户授予对新文件的完全读/写访问权限。

下表描述了用于自定义各种 FileInfo 方法的行为的枚举。

枚举

说明

FileAccess

指定对文件的读取和写入访问。

FileShare

为已在使用中的文件指定允许的访问级别。

FileMode

指定是保留还是改写现有文件的内容,并指定创建现有文件的请求是否会导致异常。

注意

在接受路径作为输入字符串的成员中,路径必须是格式良好的,否则将引发异常。例如,如果路径是完全限定的但以空格开头,则路径在类的方法中不会被修剪。因此,路径的格式不是良好的,并将引发异常。同样,路径或路径的组合不能被完全限定两次。例如,“c:\temp c:\windows”在大多数情况下也将引发异常。在使用接受路径字符串的方法时,请确保路径是格式良好的。

5.然后进行逐行读取变可以了。然后我应用的是原始的EF 进行添加的插入数据的效率不高,但是这个一个非常简单的一个程序。

代码如下:

static void Main(string[] args)
{ //进行导入Exel数据
try
{
WxyhData context = new WxyhData(); string fileDir = Properties.Settings.Default.ExcelFileDir;//进行读取Exel的路径
string fishFile = Properties.Settings.Default.FinishedFileDir;//结束的Exel 的路径 List<string> files = FilesGetter.GetFiles(fileDir);//进行获取目录下面的EXEL
int successCount = 0;
int updateCount = 0; #region 1.先判断目录是否为空 if (files.Count() > 0)
{
List<string> processedData = new List<string>(); Console.WriteLine("开始从根目录{0}导入文件", fileDir); #region 2.去掉读取Copy中的文件夹里面的内容 foreach (string fileExc in files)
{
//判断文件是否存在
if (System.IO.File.Exists(fileExc))
{ //如果是以E:\temp\finished 那么就不进行读取否则才进行读取原因是这个是备份的文件
if (fileExc.StartsWith(fishFile) == false)
{
GlobalTools.WriteLog("AutoGetMXIntAcct", 0, "开始从目录:" + fileDir + "导入文件:" + fileExc);
try
{
Workbook book = new Workbook(fileExc);
var cells = book.Worksheets[0].Cells;
//从文件第1行开始读取
var table = cells.ExportDataTableAsString(0, 0, cells.MaxRow + 1, cells.MaxColumn + 1, true); GlobalTools.WriteLog("AutoGetMXIntAcct", 0, "开始从目录:" + fileDir + "导入文件:" + fileExc + ", 共" + table.Rows.Count + "条数据");
#region 3.进行逐条的读取Exel中的每一条的数据进行添加到数据库MX_Int_Acct表中 for (int i = 0; i < table.Rows.Count; i++)
{
#region 3.进行读取Exel
var row = table.Rows[i];
string sys_CifCode = "";//手机号码
string sysAccount = ""; //身份证号
int balance = 0;
string acctName = "";
try
{
sys_CifCode = ((string)row["手机号码"]).Trim();
balance = int.Parse((row["活动积分"]).ToString().Trim());
acctName = ((string)row["显示名称"]).Trim() ?? string.Empty;
sysAccount = ((string)row["身份证号码"]).Trim();
}
catch
{
sysAccount = string.Empty;
acctName = string.Empty;
}
int count = context.MX_INT_ACCT.Where(p => p.SYS_CIF_CODE == sys_CifCode).Count();
//如果存在记录就就行更新否则就就行插入的动作.
if (count > 0)
{
MX_INT_ACCT mxIntAcct = context.MX_INT_ACCT.Where(p => p.SYS_CIF_CODE == sys_CifCode).FirstOrDefault();
mxIntAcct.ACCT_NAME = acctName;
mxIntAcct.BALANCE = balance;
mxIntAcct.SYS_CIF_CODE = sys_CifCode;
mxIntAcct.UPDATE_DATE = DateTime.Now;
mxIntAcct.SYS_ACCOUNT = sysAccount;
updateCount++;
Console.WriteLine("更新成功{0}数据", updateCount); }
else
{
if (processedData.Contains(sys_CifCode))
{
continue;
}
processedData.Add(sys_CifCode);
MX_INT_ACCT mxIntAcct = IntitalMxIntAcct(acctName, balance, sysAccount, sys_CifCode);
context.MX_INT_ACCT.AddObject(mxIntAcct);
successCount++;
Console.WriteLine("导入成功{0}数据", successCount);
}
#endregion
} using (TransactionScope trans = new TransactionScope(TransactionScopeOption.Required))
{
context.SaveChanges();
trans.Complete();
}
#endregion
} catch (Exception ex)
{
GlobalTools.WriteLog("AutoGetMXIntAcct", 0, "异常消息" + ex.ToString());
GlobalTools.WriteErrLog("AutoGetMXIntAcct", ex);
}
} else
{
Console.WriteLine(@"E:\temp\File目录中的备份的文件不进行读取!");
} }
} #endregion
} #endregion
//Exel文件删除
FileInfoExc(files);
} catch (Exception ex)
{
GlobalTools.WriteLog("AutoMxAcctInt", 0, "错误的日志" + ex.ToString());
}
} /// <summary>
///将添加的文件进行保存到指定目录以及当前的文件进行删除
/// </summary>
/// <param name="files"></param>
private static void FileInfoExc(List<string> files)
{
foreach (string fileExc in files)
{
FileInfo fileInfo = new FileInfo(fileExc);
string copyfileDir = Properties.Settings.Default.FinishedFileDir;
string copypath = copyfileDir + "\\" + fileInfo.Name + "-copy-" + DateTime.Now.ToString("yyyy-MM-dd-HHmmss");
//File.Move(fileExc, copypath);
File.Move(fileExc, copypath);
//File.Copy(fileExc, copypath);
File.Delete(fileExc);
GlobalTools.WriteLog("AutoGetMXIntAcct", 0, "文件移动到:" + copypath);
}
}

  

应用控制台应用程序开发批量导入EXEL程序。的更多相关文章

  1. 应用.NET控制台应用程序开发批量导入程序。

    一.最近一直在调整去年以及维护去年开发的项目,好久没有在进行个人的博客了.每天抽了一定的时间在研究一些开源的框架,Drapper 以及NHibernate以及当前比较流行的SqlSuper框架 并进行 ...

  2. 微信小程序开发实战-天气小程序

    园龄6年8个月了,还一篇文章都没写过,惭愧! 最近周末做了个天气预报小程序,在这里整理一下开发过程和注意点,给对小程序开发感兴趣的伙伴们提供点参考. 废话不多说,先上图最终效果: 下面进入正文: 第一 ...

  3. 微信小程序开发详解——小程序,大颠覆!

    微信小程序开发 联系 苏念 188.1414.7927  微信小程序系统开发 微信新功能开发 小程序开发 小程序怎么开发 app小程序开发 简化小程序开发 微信小程序定制 小程序制作 开发微信小程序  ...

  4. 微信小程序开发01 --- 微信小程序项目结构介绍

    一.微信小程序简单介绍: 微信官方介绍微信小程序是一个不需要下载安装就可使用(呵呵,JS代码不用下载吗?展示的UI不用下载吗?)的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用. ...

  5. 微信小程序开发2-第一个小程序开发准备

    1.首先在官网上注册一个账号( https://mp.weixin.qq.com/ )申请一个AppID(类似于人的身份证,小程序也需要身份证) 注册过程不多说 2.安装开发工具( https://m ...

  6. 【小程序开发】微信小程序开发中遇到的那些坑...

    第一坑: 设置了三个tabBar,却默认显示第二个,不能展示我的第一个[首页]. "list": [{ "pagePath":"page/KTGJ/i ...

  7. wx小程序开发 1:小程序代码构成

    官网学习地址:https://developers.weixin.qq.com/miniprogram/dev/quickstart/basic/introduction.html 1: 2:待续.. ...

  8. 程序开发入门工具之CodeBlocks

    程序开发基础工具之CodeBlocks 作为程序开发工作者,我们会接触很多的程序开发软件:但实用以及容易掌握的程序开发软件对于初学者的学习能力是有一定的加成的.今天我就作为一个程序开发者给大家推荐一个 ...

  9. 三言两语之微信小程序开发初体验(1)

    一.前情   直接切入主题,微信发布了小程序,前端开发者表示,如果不会微信小程序的开发感觉就跟不上时代了,先解答几个容易出现歧义的问题 小程序就叫小程序,不叫应用号,因为apple不准,哈哈 小程序是 ...

随机推荐

  1. 简述Android系统内存不足时候,内存回收机制

    当Android系统的内存不足时,会根据以下的内存回收规则来回收内存: 1.先回收与其他Activity或Service/Intent Receiver无关的进程(即优先回收独立的Activity) ...

  2. 无法打开登录 'ASPState' 中请求的数据库。登录失败。

    问题: 无法打开登录 'ASPState' 中请求的数据库.登录失败.用户 'WH\Administrator' 登录失败. 解决方法: (启动SQL Server Agent服务) 从本系统中找到: ...

  3. js原生设计模式——13桥接模式(相同业务逻辑抽象化处理的职责链模式)

    桥接模式之多元化类之间的实例化调用实例 <!DOCTYPE html><html lang="en"><head>    <meta ch ...

  4. 解剖 Elasticsearch 集群 - 之三

    解剖 Elasticsearch 集群 - 之三 本篇文章是一系列涵盖 Elasticsearch 底层架构和原型示例的其中一篇.在本篇文章中,我们会讨论 Elasticsearch 如何提供准实时搜 ...

  5. jQuery replaceWith replaceAll end的用法

    jQuery replaceWith replaceAll end的用法 <%@ page language="java" import="java.util.*& ...

  6. java程序的工作原理

    Sun公司设计java语言的目标是让Java程序不必经过修改就可以在各种各样的计算机(包括PC机和工作站)上运行.为了实现这一目标,Sun公司提供了一阵Java虚拟机(Java Virtual Mac ...

  7. Memcached Client的释疑

    1.目前大多数php环境里使用的都是不带d的memcache版本,这个版本出的比较早,是一个原生版本,完全在php框架内开发的.与之对应的带d的memcached是建立在libmemcached的基础 ...

  8. asp.net客户端IP跟踪

    /// <summary> /// 获取客户端IP地址(无视代理) /// </summary> /// <returns>若失败则返回回送地址</retur ...

  9. 微信小程序维护登录态与获取用户信息

    前言. 微信小程序的运行环境不是在浏览器下运行的.所以不能以cookie来维护登录态.下面我就来说说我根据官方给出的方法来写出的维护登录态的方法吧. 一.登录态维护 官方的文档地址:https://m ...

  10. 在VMWare虚拟机中安装Ubuntu 16.04.1 LTS

    一.需要的准备 安装好VMWare虚拟机(傻瓜式安装,一直next就可以,请支持正版),将Ubuntu的系统镜像下载好,目前最新的LTS版本为16.04.1. 我把虚拟机和Ubuntu镜像传到了百度云 ...