.NET中使用OleDb读取Excel
在.NET中可以用OleDb(Object linking and embeding DataBase)来访问Excel
using System;
using System.Data;
using System.Windows.Forms;
using System.Data.OleDb; namespace ExcelDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
//xls为Excel2003-2007版本的Excel文件后缀,而xlsx为2007以上版本的后缀名
//var dt = ExcelToDataTable(@"E:\WorkSpace\VS\ExcelDemo\test.xls", "sheet1");
var dt = ExcelToDataTable(@"E:\WorkSpace\VS\ExcelDemo\test.xlsx", "sheet1");
this.dataGridView1.DataSource=dt;
}
private DataTable ExcelToDataTable(string strExcelFileName, string strSheetName)
{
//Jet和Ace都是连接Excel对象的接口引擎,但是二者有区别.
//string strConn = "Provider=Microsoft.Jet.OLEDB.8.0;" + "Data Source=" + strExcelFileName + ";" +
//"Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';";
string strConn = @"Provider=Microsoft.Ace.OLEDB.12.0;" + "Data Source=" + strExcelFileName + ";" +
"Extended Properties='Excel 12.0;HDR=Yes;IMEX=1';";
string strExcel = string.Format("select * from [{0}$]", strSheetName);
//创建OleDb连接,对于特定的数据源类型,传入不同的连接字符串
OleDbConnection connection = new OleDbConnection(strConn);
connection.Open();
OleDbDataAdapter da = new OleDbDataAdapter(strExcel,connection);
var ds = new DataSet();
da.Fill(ds,strSheetName);
return ds.Tables[strSheetName];
}
}
}
最开始用的Excel对象接口引擎为Jet,但是在测试时发现对于Excel2013版本的文件,在执行到31行时会报错"外部表不是标准格式".将Excel另存为2003-2007版本时不报错.
原来Jet引擎和Ace引擎是有区别的,具体参考 http://blog.csdn.net/xifeijian/article/details/8333396
.NET中使用OleDb读取Excel的更多相关文章
- 使用OLEDB读取excel和csv文件
这是我第一次在博客上写东西,简单的为大家分享一个oledb读取文件的功能吧,这两天在做一个文件导入数据库的小demo,就想着导入前先在页面上展示一下,之前调用Microsoft.Office.Inte ...
- 如何在C#中打开和读取EXCEL文件
这篇文章向您展示如何在C#Windows Forms Application中使用ExcelDataReader,ExcelDataReader.DataSet打开和读取Excel文件.创建一个新的W ...
- OLEDB读取EXCEL表格时,某些字段为空,怎么办?
转载:http://blog.sina.com.cn/s/blog_53864cba01011cbn.html 前些日子,写了一个Excel导入数据库的共同Batch,突然有一天发现当我修改Exc ...
- java中使用jxl读取excel中的数据
package bboss; import java.io.File; import java.io.FileInputStream; import java.io.IOException; impo ...
- 用OLEDB读取EXCEL时,单元格内容长度超过255被截断
https://support.microsoft.com/zh-cn/help/189897/data-truncated-to-255-characters-with-excel-odbc-dri ...
- 【C#】采用OleDB读取Excel文件转DataTable
using System; using System.Data; using System.Data.OleDb; using System.IO; using System.Linq; using ...
- ADO.NET(OleDb)读取Excel表格时的一个BUG
如果我们有例如以下一个Excel表格: 如今要使用C#程序读取其内容: using System; using System.Data.OleDb; namespace Skyiv.Be ...
- C# - 使用 OLEDB读取 excel(不用Excel对象).
参考: How to read from an Excel file using OLEDB 为了使用方便,我做成了工具类(OledbCommon.cs),好以后使用. 注:连接字符串中,Provid ...
- 使用oledb读取excel表
string path = "C:\\Users\\aaa\\Desktop\\aa.xls"; string conn = "Provider = Microsoft. ...
随机推荐
- 关于四则运算的代码debug测试
1.首先检测题目是否能为负数,0? 截图: 总结:如图所示出题数目为0的时候,并没提示重新输入,而是输出空白,而当输出题目为负数的时候系统提示错误,并且提示终止 2.检测操作值得范围: 总结:当操 ...
- Android 动态Tab分页效果实现
当前项目使用的是TabHost+Activity进行分页,目前要做个报表功能,需要在一个Tab页内进行Activity的切换.比方说我有4个Tab页分别为Tab1,Tab2,Tab3,Tab4,现在的 ...
- 【BZOJ】【3991】【SDOI2015】寻宝游戏
dfs序 我哭啊……这题在考试的时候(我不是山东的,CH大法吼)没想出来……只写了50分的暴力QAQ 而且苦逼的写的比正解还长……我骗点分容易吗QAQ 骗分做法: 1.$n,m\leq 1000$: ...
- Leetcode#148 Sort List
原题地址 链表归并排序 真是恶心的一道题啊,哇了好多次才过. 代码: void mergeList(ListNode *a, ListNode *b, ListNode *&h, ListNo ...
- NENU_CS_segment_tree
单点更新 http://acm.hdu.edu.cn/showproblem.php?pid=1166 题意:单点更新加减,区间查询求和. #include<cstdio> #define ...
- vitrualbox虚拟机64位安装报错解决
1 NtCreateFile(\Device\VBoxDrvStub) failed: 0xc0000034 STATUS_OBJECT_NAME_NOT_FOUND (0 retries) 解决办法 ...
- JavaScript之表单验证讲解
JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证. JavaScript 表单验证 JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些 ...
- .NET设计模式(4):建造者模式(Builder Pattern)(转)
概述 在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成:由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定. ...
- 平面最小割—BZOJ 1001
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 很有意思的题目,本来想直接上网络流,但是发现点太多,边太多2333. 直接网络流无法 ...
- asp.net各种类型视频播放代码(全)
1.avi格式 代码片断如下: <object id="video" width="400" height="200" border= ...