把Excel作为数据库,读到DataTable中,Excel科学计数法数字转字符串
需要引用:using System.Data.OleDb;
/// <summary>
/// 获取Excel数据,包含所有sheet
/// </summary>
/// <param name="fullPath"></param>
/// <returns></returns>
public DataSet GetExcelTables(string fullPath)
{
DataSet ds = new DataSet();
if (File.Exists(fullPath))
{
//HDR=No 第一行就是数据
string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fullPath + ";Extended Properties='Excel 12.0;HDR=No;IMEX=1;'";
using (OleDbConnection conn = new OleDbConnection(strConn))
{
conn.Open();
foreach (DataRow item in conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null).Rows)
{
string tableName = item[].ToString().Trim();
DataTable dt = new DataTable();
dt.TableName = tableName;
OleDbDataAdapter odda = new OleDbDataAdapter("select * from [" + tableName + "]", conn);
odda.Fill(dt);
ds.Tables.Add(dt);
}
}
}
return ds;
}
Excel有两种格式:.xls(office2003) 和 .xlsx(office2007),xlsx需要用12.0的驱动,
下载地址:http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabaseEngine.exe
.xlsx(office2007)连接字符串:Provider=Microsoft.ACE.OLEDB.12.0;Data Source=表格绝对路径;Extended Properties='Excel 12.0;HDR=No;IMEX=1;'
.xls(office2003)连接字符串:Provider=Microsoft.Jet.Oledb.4.0;Data Source=表格绝对路径;Extended Properties='Excel 8.0;HDR=YES;IMEX=1;'
说明:HDR=No,意思是表格中的第一行就是数据,不是表头,系统会自动生成列;HDR=Yes,意思是表格中的第一行是表头,系统会把第一行当做DataTable的列名。
当 IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。
当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。
当 IMEX=2 时为“连結模式”,这个模式开启的 Excel 档案可同时支援“读取”与“写入”用途。
特别注意:IMEX=1的时候,读取Excel的时候会把科学计数法的数字自动转字符串,我就被这个地方坑了一下,导致我总是读不到对的数据。
最新文章
- The Managed Metadata Service or Connection is currently not available 分类: Sharepoint 2015-07-09 13:28 5人阅读 评论(0) 收藏
- 标准MDL方法修改Page、NonPage内存的属性
- (转)json+flexgrid+jbox组合运用页面刷新<;jsp>;
- APMServ本地搭建网站最好用的软件
- html中间块居中宽度自适应
- php 首页定时生成静态页面
- SQL 获取 IDENTITY 三种方法 SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY的区别
- HDOJ(HDU) 2519 新生晚会(组合公式)
- python之value和布尔值
- TypeError: Fetch argument None has invalid type <;type &#39;NoneType&#39;>;
- 管道分隔符Split
- leetcode:Path Sum【Python版】
- CCF CSP 201509-3 模板生成系统
- MathType初级教程:怎么安装MathType
- css 中的 initial inherit unset 意思
- Problem F: 最大公约数、最小公倍数
- 【BZOJ】1645: [Usaco2007 Open]City Horizon 城市地平线(线段树+特殊的技巧)
- 小米2S手机 - Charles无法安装证书 因为无法读取证书
- 如何用Ajax传一个数组数据
- Java-API:java.util.map