Asp.net 使用Microsoft.ACE.OLEDB.12.0进行Excel 导入服务器配置:
1.安装插件 AccessDatabaseEngine
2.需要确保IIS是否启用32位应用程序,因为OLEDB不支持64位。
1)打开IIS:1、Win+R打开运行;2、输入"inetmgr"打开IIS;
2)点击IIS中的应用程序池,并选择某一程序池后,点击右边的“高级设置”:
3)在IIS高级设置对话框中找到“启用32位应用程序”选项并设置为true
C#代码示例:
#region 连接Excel 读取Excel数据 并返回DataSet数据集合
///
/// 连接Excel 读取Excel数据 并返回DataSet数据集合
///
/// Excel服务器路径
/// Excel表名称
///
public static DataSet ExcelSqlConnection(string filepath, string tableName)
{
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 + "$]");
//去掉空格
int rows = ds.Tables[0].Rows.Count;
int column = ds.Tables[0].Columns.Count;
for (int i = 0; i < rows; i++)
{
bool bl = true;
for (int j = 0; j < column; j++)
{
string data = ds.Tables[0].Rows[i][j].ToString();
if (!string.IsNullOrEmpty(data))
{
ds.Tables[0].Rows[i][j] = ds.Tables[0].Rows[i][j].ToString().Replace(" ", "");
}
//去掉空格之后不为空
if (ds.Tables[0].Rows[i][j].ToString() != "")
{
bl = false;
}
}
if (bl)
{
ds.Tables[0].Rows[i].Delete();
}
}
ds.Tables[0].AcceptChanges();
ExcelConn.Close();
return ds;
}
catch
{
ExcelConn.Close();
return null;
}
}
#endregion