求一个读取Excel的第三方控件

aassbu 2011-12-15 09:23:25
1、支持Office2003以及以上版本(2007,2010)的读取
2、不需要安装office
3、开源(C#.net)
4、能识别合并单元格
谢谢大家了!
...全文
142 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
nnxckm 2011-12-20
  • 打赏
  • 举报
回复
wangxingwu0 2011-12-20
  • 打赏
  • 举报
回复
SpreadsheetGear/farPoint
showtime5156 2011-12-19
  • 打赏
  • 举报
回复
这是我写的一个方法

/// <summary>
/// 获取excel数据,返回一个dateset
/// </summary>
/// <param name="filePath">excel的物理路径</param>
/// <param name="sheet">第几个sheet</param>
/// <returns></returns>
public static DataSet LoadDataFromExcel(string filePath, int sheet)
{
try
{
string strConn = "";
if (filePath.EndsWith("xls"))
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
else if (filePath.EndsWith("xlsx"))
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
else
return null;
OleDbConnection OleConn = new OleDbConnection(strConn);
OleConn.Open();
String sql = "SELECT * FROM [Sheet" + sheet + "$]";//可是更改Sheet名称,比如sheet2,等等

OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
DataSet OleDsExcle = new DataSet();
OleDaExcel.Fill(OleDsExcle, "Sheet" + sheet);
OleConn.Close();
return OleDsExcle;
}
catch (Exception err)
{
return null;
}
}

给你做参考,03以上的可以,以下的没试过。office07是一个分界点,存储的方式改变了。
在路上20130607 2011-12-19
  • 打赏
  • 举报
回复
npoi 不清楚 对2010是否支持
在路上20130607 2011-12-19
  • 打赏
  • 举报
回复
我推荐 npoi
mjp1234airen4385 2011-12-19
  • 打赏
  • 举报
回复
string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileName + ";Extended Properties=\"Excel 8.0;HDR=no;IMEX=0\"";
string StrSQL = "SELECT * FROM [Sheet1$]";
System.Data.OleDb.OleDbDataAdapter DataAda = new System.Data.OleDb.OleDbDataAdapter(StrSQL, ConnectionString);
DataSet DSTemp = new DataSet();
DataAda.Fill(DSTemp);
DataAda.Dispose();



这个即使读取excel的代码了,能读取office2007以下的excel,如果是office2007以上的换一下驱动就行,就是这句话:ConnectionString 的内容,你在网上找找,改下就好了。
mjp1234airen4385 2011-12-19
  • 打赏
  • 举报
回复
如果没有图片的话,使用oledb自己读取就行了。
第三方的软件,抛开微软的office套件,好像在读取图片上都有问题。

aassbu 2011-12-19
  • 打赏
  • 举报
回复
支持64位操作系统

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧