Excel读取导入数据库碰到的问题
无成本创业,低风险:
1.未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序。
2.可能出现解析Excel时导致服务“Office Software Protection Platform”停止,不能进行excel的继续解析导致程序假死;
a) 服务“Office Software Protection Platform”设置权限如下

b) 设置服务的恢复状况

3.转换excel
private void ConvertExcel(string savePath)
{
//将xml文件转换为标准的Excel格式
Object Nothing = Missing.Value;//由于yongCOM组件很多值需要用Missing.Value代替
Excel.Application ExclApp = new Excel.ApplicationClass();// 初始化
Excel.Workbook ExclDoc = null;
try
{
ExclDoc = ExclApp.Workbooks.Open(savePath, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing);//打开Excl工作薄
Object format = Excel.XlFileFormat.xlWorkbookNormal;//获取Excl 2007文件格式 //Excel.XlFileFormat.xlWorkbookDefault;
ExclApp.DisplayAlerts = false;
ExclDoc.SaveAs(savePath, format, Nothing, Nothing, Nothing, Nothing, Excel.XlSaveAsAccessMode.xlExclusive, Nothing, Nothing, Nothing, Nothing, Nothing);//保存为Excl 2007格式
//ExclDoc.SaveAs(savePath, format, Nothing, Nothing, Nothing, Nothing, Excel.XlSaveAsAccessMode.xlNoChange, Nothing, Nothing, Nothing, Nothing, Nothing);//保存为Excl 2007格式
}
catch (Exception ex)
{
LogEntry.TraceError("ConvertExcel", ex);
}
finally
{
if (ExclDoc != null)
{
ExclDoc.Close(Nothing, Nothing, Nothing);
}
ExclApp.Quit();
this.KillExcel();
}
}
4.OLEDB读取excel数据
private DataTable GetExcelData(string filePath)
{
DataTable result = null;
//string strConn = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=YES;IMEX=1'", filePath);//Excel 8.0;HDR=YES;IMEX=1;//Excel 97-2003
//string strConn = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0 Xml;HDR=YES';", filePath);//Excel 2007-2013
string strConn = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;HDR=YES;IMEX=1';", filePath);//Excel 2007-2013
//this.KillExcel();
using (OleDbConnection oleDbConn = new OleDbConnection(strConn))
{
try
{
oleDbConn.Open();
DataTable schemaTable = oleDbConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
string tableName = "";
if (schemaTable != null && schemaTable.Rows.Count > )
{
tableName = schemaTable.Rows[][].ToString().Trim();//获取到第一个Sheet1名称作为表名
string strExcel = "";
OleDbDataAdapter oleDbAdp = null;
DataSet ds = new DataSet();
strExcel = "select * from [" + tableName + "]";
oleDbAdp = new OleDbDataAdapter(strExcel, strConn);
oleDbAdp.Fill(ds, tableName);
if (ds != null && ds.Tables.Count > )
{
result = ds.Tables[tableName];
}
}
else
{
LogEntry.TraceError("Excel文件读取错误,内容为空,文件路径:" + filePath, null);
}
}
catch (Exception ex)
{
LogEntry.TraceError("读取Excel异常", ex);
this.ConvertExcel(filePath);//出现不能读取时,转换下文件,下次可以读取
}
finally
{
oleDbConn.Close();
}
}
return result;
}
3.当程序的宿主为windows服务时
读取一个excel后可能导致不能读取下一个excel文件,问题原因暂时怀疑权限阻止导致,暂时没解决;
Excel读取导入数据库碰到的问题的更多相关文章
- C# Excel 读取导入数据库
使用Aspose.Cells组件. 表格第一行为表头合并,第二行为数据名称,从第三行开始数据. if (xtraOpenFileDialog1.ShowDialog() == DialogResult ...
- 使用python将excel数据导入数据库
使用python将excel数据导入数据库 因为需要对数据处理,将excel数据导入到数据库,记录一下过程. 使用到的库:xlrd 和 pymysql (如果需要写到excel可以使用xlwt) 直接 ...
- Excel 读取写入数据库
// Excel 读取写入数据库 // 3.8版本的poi 4.0 可以不用写 parseCell 这个方法,可以直接赋值 STRING 类型 import org.apache.poi.hss ...
- ASP.NET Excel数据导入数据库
<identity impersonate="true"/> 是指模拟IIS身份验证 導入錯誤時可刪除 protected void btnImport_Click(o ...
- C#将Excel数据导入数据库(MySQL或Sql Server)
最近一直很忙,很久没写博客了.今天给大家讲解一下如何用C#将Excel数据导入Excel,同时在文章最后附上如何用sqlserver和mysql工具导入数据. 导入过程大致分为两步: 1.将excel ...
- 利用poi,jxl将Excel数据导入数据库
需求:‘需要将本地的Excel中的数据经过验证之后导入数据库,在导入数据库之前在页面上展示出来 思路:将Excel导入存到session里面 去判断有没有不合法数据 如果有阻止提交 工具类: imp ...
- PHPExcel将Excel数据导入数据库
<?php //PHPExcel读取导入Excel数据到数据库(2003,2007通用)使用方法: //先用excel2array()方法将excel表中的数据存储到数组,在从遍历二维数组将数据 ...
- [Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!
引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...
- C#解决从含身份证号码的Excel表格导入数据库的问题
用C#做从Excel表导入SQL数据库时发现从EXCEL导入的身份证号码会变成科学表示方法. 解决这个问题是比较容易的,首先,打开电子表格,选中“身份证号码”一列,右键选择“设置单元格格式”,进入单元 ...
随机推荐
- 4、重建二叉树------------>剑指offer系列
题目1-二叉树重建 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序 ...
- UITabBarController、导航控制器、控制器关系
UITabBarController与UINavigationController类似,UITabBarController也可以用来控制多个页面导航,用户可以在多个视图控制器之间移动,并可以定制屏幕 ...
- uvm_reg_model——寄存器模型(一)
对于一个复杂设计,寄存器模型要能够模拟任意数量的寄存器域操作.UVM提供标准的基类库,UVM的寄存器模型来自于继承自VMM的RAL(Register Abstract Layer),现在可以先将寄存器 ...
- uvm.sv——UVM之道
文件: $UVM_HOME/src/uvm.sv 类: 无 `include "uvm_pkg.sv" Thus spake the UVM master programm ...
- 中国区 Azure 应用程序开发说明
1.文档简介 微软公司为其在境外由微软运营的 Azure 服务(以下简称为 “境外 Azure”),创建和部署云应用程序,提供了相应工具. 在中国,由世纪互联运营的 Microsoft Azure ( ...
- App Transport Security has blocked a cleartext HTTP
打开info.plist源代码复制粘贴 <key>NSAppTransportSecurity</key> <dict> <!--Includ ...
- UVA1665 Islands (并查集)
补题,逆序考虑每个询问的时间,这样每次就变成出现新岛屿,然后用并查集合并统计.fa = -1表示没出现. 以前写过,但是几乎忘了,而且以前写得好丑的,虽然常数比较小,现在重新写练练手.每个单词后面都要 ...
- mysql存储引擎中InnoDB与Myisam的区别及应用场景
1. 区别: (1)事务处理: MyISAM是非事务安全型的,而InnoDB是事务安全型的(支持事务处理等高级处理): (2)锁机制不同: MyISAM是表级锁,而InnoDB是行级锁: (3)sel ...
- 自己开发一个APP需要多少钱
广州APP开发公司[启汇网络]经常遇到有开发定制APP软件需求的企业,通常第一句问的就是“开发一款APP需要多少钱”,在做完客户行业的市场调查后,再了解客... 广州APP开发公司[启汇网络]经常遇到 ...
- POI读word doc 03 文件的两种方法
Apache poi的hwpf模块是专门用来对word doc文件进行读写操作的.在hwpf里面我们使用HWPFDocument来表示一个word doc文档.在HWPFDocument里面有这么几个 ...