服务器读取EXCEL不安装OFFICE如何实现
程序员文章站
2024-02-26 15:00:58
前段时间用asp.net做了一简单的游戏管理后台,其中涉及到了上传excel导入数据的功能,本来在本地开发实现都好好的,可已上传的服务器上就悲剧了。服务器是阿里云 wind...
前段时间用asp.net做了一简单的游戏管理后台,其中涉及到了上传excel导入数据的功能,本来在本地开发实现都好好的,可已上传的服务器上就悲剧了。服务器是阿里云 windows server 2008 r2(x64),排查后发现服务器没装office这玩意,也就不会有oledb驱动程序,实在不想装office,特别是office 2010,看着庞大的体积就头疼,怎办?
百度谷歌一番发现,其实只要安装microsoft access 2010 数据库引擎可再发行程序包即可实现2010 microsoft office system 文件与非 microsoft office 应用程序之间传输数据,支持现有的 microsoft office 文件(例如 microsoft office access 2010(*.mdb 和 *.accdb)文件和 microsoft office excel 2010(*.xls、*.xlsx 和 *.xlsb)文件)与其他数据源(例如 microsoft sql server)之间传输数据。还支持与现有文本文件建立连接。 此外,还会安装 odbc 和 oledb 驱动程序,供应用程序开发人员在开发与 office 文件格式连接的应用程序时使用。该安装包下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=13255 。
装上这个包后,一段代码就搞定:
/// <summary>
/// 连接excel 读取excel数据 并返回dataset数据集合
/// </summary>
/// <param name="filepath">excel服务器路径</param>
/// <param name="tablename">excel表名称</param>
/// <returns></returns>
public static system.data.dataset excelsqlconnection(string filepath, string tablename)
{
//string strcon = "provider=microsoft.jet.oledb.4.0;data source=" + filepath + ";extended properties='excel 8.0;hdr=yes;imex=1'";
string strcon = "provider=microsoft.ace.oledb.12.0;data source=" + filepath + ";extended properties='excel 12.0;hdr=yes;imex=1'";
oledbconnection excelconn = new oledbconnection(strcon);
try
{
string strcom = string.format("select * from [sheet1$]");
excelconn.open();
oledbdataadapter mycommand = new oledbdataadapter(strcom, excelconn);
dataset ds = new dataset();
mycommand.fill(ds, "[" + tablename + "$]");
excelconn.close();
return ds;
}
catch
{
excelconn.close();
return null;
}
}
百度谷歌一番发现,其实只要安装microsoft access 2010 数据库引擎可再发行程序包即可实现2010 microsoft office system 文件与非 microsoft office 应用程序之间传输数据,支持现有的 microsoft office 文件(例如 microsoft office access 2010(*.mdb 和 *.accdb)文件和 microsoft office excel 2010(*.xls、*.xlsx 和 *.xlsb)文件)与其他数据源(例如 microsoft sql server)之间传输数据。还支持与现有文本文件建立连接。 此外,还会安装 odbc 和 oledb 驱动程序,供应用程序开发人员在开发与 office 文件格式连接的应用程序时使用。该安装包下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=13255 。
装上这个包后,一段代码就搞定:
复制代码 代码如下:
/// <summary>
/// 连接excel 读取excel数据 并返回dataset数据集合
/// </summary>
/// <param name="filepath">excel服务器路径</param>
/// <param name="tablename">excel表名称</param>
/// <returns></returns>
public static system.data.dataset excelsqlconnection(string filepath, string tablename)
{
//string strcon = "provider=microsoft.jet.oledb.4.0;data source=" + filepath + ";extended properties='excel 8.0;hdr=yes;imex=1'";
string strcon = "provider=microsoft.ace.oledb.12.0;data source=" + filepath + ";extended properties='excel 12.0;hdr=yes;imex=1'";
oledbconnection excelconn = new oledbconnection(strcon);
try
{
string strcom = string.format("select * from [sheet1$]");
excelconn.open();
oledbdataadapter mycommand = new oledbdataadapter(strcom, excelconn);
dataset ds = new dataset();
mycommand.fill(ds, "[" + tablename + "$]");
excelconn.close();
return ds;
}
catch
{
excelconn.close();
return null;
}
}