.net 打开Excel文档并转为DataTable
/// <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的更多相关文章
- 使用COM打开Excel文档注意事项
本文主要讲解程序中打开Excel文档,读写Excel文档可以参照前章: C#读写Excel实践笔记 C#使用NPOI读写Excel的注意事项 如果只是单纯的打开Excel文档,建议使用: System ...
- DataSet数据导出为Excel文档(每个DataTable为一个Sheet)
Web项目中,很多时候须要实现将查询的数据集导出为Excel文档的功能,很多时候不希望在工程中添加对Office组件相关的DLL的引用,甚至有时候受到Office不同版本的影响,导致在不同的服务器上部 ...
- c#中打开Excel文档
方法一:(调用Excel的COM组件) 在项目中打开Add Reference对话框,选择COM栏,之后在COM列表中找到"Microsoft Excel 11.0 Object ...
- 4位组合型Excel文档密码怎么破解
现代社会我们会遇到各种密码,很多的密码我们一段时间不用就不知不觉的忘记了.很多的excel用户就遇到过这种情况,这个时候我们就需要一款Excel密码破解工具.Advanced Office Passw ...
- C#编程实现Excel文档中搜索文本
有了在Word文档中编程实现搜索文本的经验,在Excel中实现这个功能也并非难事. 打开Excel的VBA帮助,查看Excel的对象模型,很容易找到完成这个功能需要的几个集合和对象:Applicati ...
- 如何才能恢复Excel文档的打开密码
对于一些密码的破解,最常用的方法就是“暴力破解”,也是获取密码的最后一种方法,Advanced Office Password Recovery的暴力破解能够破解复杂的Office文档密码.wps也有 ...
- C#操作Excel(2)-- 打开-读取Excel文档
由于要为某软件实现导出Excel功能,故有此文. 本文的开发环境是Visual Studio 2010 ,C#, Excel 2007. 新建C#工程后打开Solution Explorer,可以看到 ...
- 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 ...
- 【转】ExcelHelper类,用npoi读取Excel文档
//------------------------------------------------------------------------------------- // All Right ...
随机推荐
- Tomcat端口的改变和编码的设置
1.更改默认的端口: 在默认情况下,tomcat的端口是8080,如果出现8080端口号冲突,用如下方法可以修改Tomcat的端口号: 首先: 在Tomcat的根(安装)目录下,有一个conf文件夹, ...
- 线特征---LineMatching代码运行(五)
[1] https://github.com/dlut-dimt/LineMatching The code is based on Matlab. https://github.com/ka ...
- webapi 设置不显示接口到swaggerUI
请添加如下属性: [ApiExplorerSettings(IgnoreApi = true)]
- 21.Mysql Server优化
21.优化Mysql Server21.1 Mysql体系结构概览Mysql由Mysql Server层和存储引擎层组成.Mysql实例由一组后台进程.一写内存块和若干服务线程组成.Mysql后台进程 ...
- mysql-5.7.19免安装版的配置方法
1. 下载MySQL Community Server 5.6.13 2. 解压MySQL压缩包 将以下载的MySQL压缩包解压到自定义目录下,我的解压目录是: "D:\Pr ...
- 从matlab中导出下载到的轨迹数据
我从该网址(http://www.ee.cuhk.edu.hk/~xgwang/MITtrajsingle.html)下载到了一些轨迹数据. 网页中简单说明了轨迹数据的由来:原始数据是在一个停车场上方 ...
- Linux使用touch批量修改文件/文件夹时间戳
Linux下touch是一个非常有用的命令. touch语法结构如下: touch [-acfm][-d <日期时间>][-r <参考文件或目录>][-t <日期时间 ...
- 应用内直接跳转到Appstore
iOS开发中,应用内直接跳转到Appstore .进入appstore中指定的应用 NSString *str = [NSString stringWithFormat: @"itms:// ...
- [转]slf4j 与log4j 日志管理
log4j简易入门 package test.log4j; import org.apache.log4j.Logger; public class HelloLog4j { private stat ...
- 脚本路径问题_dirname
pwd可获取命令当前的路径 可是若我们想在脚本中获取脚本所在文件夹的路径,这种方法是不够用的. 例如,我们的脚本放在/home/user/script/下,名字叫做getpath.sh getpath ...