/// <summary>
/// 打开Excel文档并转为DataTable
/// </summary>
/// <returns></returns>
public static DataTable ExcelWorksheetToDataTable()
{
DataTable dtExecl = new DataTable();
double Ver = GetExcelVer();
if (Ver <= )
{
MessageBox.Show("The computer does not have Excel installed.", "prompt");
return null;
}
string ExcelFile = "";
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
OleDbConnection conn = null;
ExcelFile = ofd.FileName;
if (ExcelFile.Length > )
{
try
{
string StrConn = "Provider={0};" + "Data Source=" + ExcelFile + ";" + "Extended Properties='Excel {1};HDR=YES; IMEX=1'";
if ((new System.IO.FileInfo(ExcelFile).Extension).ToLower() == ".xlsx")
{
StrConn = string.Format(StrConn, "Microsoft.ACE.OLEDB.12.0", "12.0");
}
else
{
StrConn = string.Format(StrConn, "Microsoft.Jet.OLEDB.4.0", "8.0");
} conn = new OleDbConnection(StrConn);
DataSet ds = new DataSet();
conn.Open();
OleDbDataAdapter myCommand = null;
myCommand = new OleDbDataAdapter("select * from [sheet1$]", StrConn);
myCommand.Fill(ds, "sheet1");
if (ds != null && ds.Tables.Count > )
{
dtExecl = ds.Tables[];
if (!dtExecl.Columns.Contains("IntAUID"))
{
dtExecl.Columns.Add("IntAUID", typeof(int));
}
int i = ;
foreach (DataRow dr in dtExecl.Rows)
{
dr["IntAUID"] = i;
i += ;
}
}
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
return null;
}
finally
{
conn.Close();
conn.Dispose();
}
}
}
return dtExecl;
}

Code by 博客园-曹永思

        /// <summary>
/// 获取当前计算机安装Excel版本号
/// </summary>
/// <returns></returns>
private static double GetExcelVer()
{
Type objExcelType = Type.GetTypeFromProgID("Excel.Application");
if (objExcelType == null)
{
return ;
}
object objApp = Activator.CreateInstance(objExcelType);
if (objApp == null)
{
return ;
}
object objVer = objApp.GetType().InvokeMember("Version", BindingFlags.GetProperty, null, objApp, null);
double Ver = Convert.ToDouble(objVer.ToString());
return Ver;
}

.net 打开Excel文档并转为DataTable的更多相关文章

  1. 使用COM打开Excel文档注意事项

    本文主要讲解程序中打开Excel文档,读写Excel文档可以参照前章: C#读写Excel实践笔记 C#使用NPOI读写Excel的注意事项 如果只是单纯的打开Excel文档,建议使用: System ...

  2. DataSet数据导出为Excel文档(每个DataTable为一个Sheet)

    Web项目中,很多时候须要实现将查询的数据集导出为Excel文档的功能,很多时候不希望在工程中添加对Office组件相关的DLL的引用,甚至有时候受到Office不同版本的影响,导致在不同的服务器上部 ...

  3. c#中打开Excel文档

    方法一:(调用Excel的COM组件)       在项目中打开Add Reference对话框,选择COM栏,之后在COM列表中找到"Microsoft Excel 11.0 Object ...

  4. 4位组合型Excel文档密码怎么破解

    现代社会我们会遇到各种密码,很多的密码我们一段时间不用就不知不觉的忘记了.很多的excel用户就遇到过这种情况,这个时候我们就需要一款Excel密码破解工具.Advanced Office Passw ...

  5. C#编程实现Excel文档中搜索文本

    有了在Word文档中编程实现搜索文本的经验,在Excel中实现这个功能也并非难事. 打开Excel的VBA帮助,查看Excel的对象模型,很容易找到完成这个功能需要的几个集合和对象:Applicati ...

  6. 如何才能恢复Excel文档的打开密码

    对于一些密码的破解,最常用的方法就是“暴力破解”,也是获取密码的最后一种方法,Advanced Office Password Recovery的暴力破解能够破解复杂的Office文档密码.wps也有 ...

  7. C#操作Excel(2)-- 打开-读取Excel文档

    由于要为某软件实现导出Excel功能,故有此文. 本文的开发环境是Visual Studio 2010 ,C#, Excel 2007. 新建C#工程后打开Solution Explorer,可以看到 ...

  8. NPOI 2.1.1 系列(2) 使用NPOI读取List或者datatable数据生成 Excel文档 ;Npoi生成 xlsx 2007以上文档

    结合上一篇文章  NPOI 2.1.1 系列(1) 使用NPOI读取 Excel文档 ;NpoiExcelHelper 导入导出 2003格式 2007格式的 Excel; Npoi 导出 xlsx ...

  9. 【转】ExcelHelper类,用npoi读取Excel文档

    //------------------------------------------------------------------------------------- // All Right ...

随机推荐

  1. 30-算法训练 最短路 spfa

    http://lx.lanqiao.cn/problem.page?gpid=T15 算法训练 最短路   时间限制:1.0s   内存限制:256.0MB        问题描述 给定一个n个顶点, ...

  2. JFinal文件上传时直接使用getPara()去接受表单的数据接收到的数据一直是null?

    解决方案: 在文件上传页面form 标签中使用: enctype="multipart/form-data" 在controller类中先调用getFile系列方法才能使getPa ...

  3. Linux pip安装使用详解

    简介 pip是Python有它自己的包管理工具,与yum和apt-get相似. 安装步骤: 1.下载get-pip.py:https://bootstrap.pypa.io/get-pip.py 2. ...

  4. 【Android优化篇】提升Activity加载速度的方法

    文章转自:http://www.jianshu.com/p/2007ca0290d3 作者: CoderFan 前言 这个也是我面试遇到的问题,当时只回答了一种情况,异步加载数据,没想到别的方式,回来 ...

  5. PAT 甲级 1015 Reversible Primes(20)

    1015 Reversible Primes(20 分) A reversible prime in any number system is a prime whose "reverse& ...

  6. PAT 1031 查验身份证(15)(C++&Python)

    1031 查验身份证(15)(15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8, ...

  7. linux如何查询系统驱动是否支持该型号显卡

    操作系统在做硬件适配时,经常会检查系统内核是否支持硬件的显卡:如果不支持,则一般是通过升级内核或者该型号对应品牌的显卡驱动来解决(开源或者闭源): 操作流程如下 1> 查询本机的显卡型号 因显卡 ...

  8. JianShu_failban2实现动态屏蔽的功能

    一,首先是服务安装 #vim /etc/yum.repos.d/Centos-Base.repo 在最新新增 [atrpms] name=Red Hat Enterprise Linux $relea ...

  9. NOIP需要掌握的内容(大致

    1.排序算法(快排.选择.冒泡.堆排序.二叉排序树.桶排序)2.DFS/BFS 剪枝 哈希表3.树   ①遍历   ②二叉树   ③二叉排序树(查找.生成.删除)   ④堆(二叉堆.左偏树.堆排序)  ...

  10. 【C++】c++中栈 队列 的应用

    C++中提供了STL模板statck 在使用的时候更为方便 除了一般的队列外 还有STL更有双向队列可以使用 #include<deque> 声明:deque <type > ...