欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【ASP.NET中 Execl导出的六种方法实例】,下面是详细的讲解!
ASP.NET中 Execl导出的六种方法实例
private void CreateExcelFile(string filePath, DataTable dt1,DataTable dt2,string conditions)
{
if (File.Exists(filePath))
{
File.Delete(filePath);
}
OleDbConnection oleDbConn=new OleDbConnection();
OleDbCommand oleDbCmd=new OleDbCommand();
try
{
string sSql="";
oleDbConn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + @";Extended ProPerties=""Excel 8.0;HDR=Yes;""";
oleDbConn.Open();
oleDbCmd.CommandType=CommandType.Text;
oleDbCmd.Connection=oleDbConn;
//写列名
sSql="CREATE TABLE sheet1(";
DataTable dt=dt1.Copy();
dt.Columns.Remove("MGUID");
for (int i=0; i < dt.Columns.Count; i++)
{
if (i < dt.Columns.Count - 1)
{
if (dt.Columns[i].DataType.Name=="String")
{
sSql +="[" + dt.Columns[i].ColumnName + "] Text,";
}
else if (dt.Columns[i].DataType.Name=="DateTime")
{
sSql +="[" + dt.Columns[i].ColumnName + "] Datetime,";
}
else
{
sSql +="[" + dt.Columns[i].ColumnName + "] Decimal,";
}
}
else
{
if (dt.Columns[i].DataType.Name=="String")
{
sSql +="[" + dt.Columns[i].ColumnName + "] Text)";
}
else if (dt.Columns[i].DataType.Name=="DateTime")
{
sSql +="[" + dt.Columns[i].ColumnName + "] DateTime)";
}
else
{
sSql +="[" + dt.Columns[i].ColumnName + "] Decimal)";
}
}
}
oleDbCmd.CommandText=sSql;
oleDbCmd.ExecuteNonQuery();
DataView dv=new DataView();
dv.Table=dt;
DataView dv1=new DataView();
dv1.Table=dt1;
if (conditions !="")
{
dv.RowFilter=conditions;
dv1.RowFilter=conditions;
}
dt=dv.ToTable();
dt1=dv1.ToTable();
string MGUIDs="";
for (int j=0; j < dt.Rows.Count; j++)
{
MGUIDs +=",'" + dt1.Rows[j]["MGUID"].ToString() + "'";
sSql="INSERT INTO sheet1 VALUES(";
for (int i=0; i < dt.Columns.Count; i++)
{
if (i < dt.Columns.Count - 1)
{
if (DBNull.Value.Equals(dt.Rows[j][i]))
{
sSql +="NULL,";
}
else
{
if (dt.Columns[i].DataType.Name=="Decimal")
{
sSql +=dt.Rows[j][i].ToString() + ",";
}
else
{
sSql +="'" + dt.Rows[j][i].ToString() + "',";
}
}
}
else
if (DBNull.Value.Equals(dt.Rows[j][i]))
{
sSql +="NULL)";
}
else
{
if (dt.Columns[i].DataType.Name=="Decimal")
{
sSql +=dt.Rows[j][i].ToString() + ")";
}
else
{
sSql +="'" + dt.Rows[j][i].ToString() + "')";
}
}
}
oleDbCmd.CommandText=sSql;
oleDbCmd.ExecuteNonQuery();
}
if (dt2 !=null)
{
sSql="CREATE TABLE sheet21(";
dt=dt2.Copy();
dt.Columns.Remove("MGUID");
dt.Columns.Remove("DGUID");
for (int i=0; i < dt.Columns.Count; i++)
{
if (i < dt.Columns.Count - 1)
{
if (dt.Columns[i].DataType.Name=="String")
{
sSql +="[" + dt.Columns[i].ColumnName + "] Text,";
}
else if (dt.Columns[i].DataType.Name=="DateTime")
{
sSql +="[" + dt.Columns[i].ColumnName + "] Datetime,";
}
else
{
sSql +="[" + dt.Columns[i].ColumnName + "] Decimal,";
}
}
else
{
if (dt.Columns[i].DataType.Name=="String")
{
sSql +="[" + dt.Columns[i].ColumnName + "] Text)";
}
else if (dt.Columns[i].DataType.Name=="DateTime")
{
sSql +="[" + dt.Columns[i].ColumnName + "] DateTime)";
}
else
{
sSql +="[" + dt.Columns[i].ColumnName + "] Decimal)";
}
}
}
oleDbCmd.CommandText=sSql;
oleDbCmd.ExecuteNonQuery();
dv=new DataView();
dv.Table=dt2;
if (MGUIDs !="")
{
dv.RowFilter="MGUID in(" + MGUIDs.Substring(1) + ")";
}
dt=dv.ToTable();
for (int j=0; j < dt.Rows.Count; j++)
{
sSql="INSERT INTO sheet1 VALUES(";
for (int i=0; i < dt.Columns.Count; i++)
{
if (i < dt.Columns.Count - 1)
{
if (DBNull.Value.Equals(dt.Rows[j][i]))
{
sSql +="NULL,";
}
else
{
if (dt.Columns[i].DataType.Name=="Decimal")
{
sSql +=dt.Rows[j][i].ToString() + ",";
}
else
{
sSql +="'" + dt.Rows[j][i].ToString() + "',";
}
}
}
else
if (DBNull.Value.Equals(dt.Rows[j][i]))
{
sSql +="NULL)";
}
else
{
if (dt.Columns[i].DataType.Name=="Decimal")
{
sSql +=dt.Rows[j][i].ToString() + ")";
}
else
{
sSql +="'" + dt.Rows[j][i].ToString() + "')";
}
}
}
oleDbCmd.CommandText=sSql;
oleDbCmd.ExecuteNonQuery();
}
}
}
catch (System.Exception ex)
{
throw ex;
}
finally
{
//断开连接
oleDbCmd.Dispose();
oleDbConn.Close();
oleDbConn.Dispose();
}
}
关于ASP.NET中 Execl导出的六种方法实例的用户互动如下:
相关问题:
答: >>详细
相关问题:
答: >>详细
相关问题:
答: >>详细
- 【asp】asp.net url重写浅谈-net-url重写
- 【DataSet】DataSet、DataTable、DataRow区别详解
- 【asp】asp.net 动态添加多个用户控件-net-动态添
- 【ASP】ASP.NET中内嵌页面代码的一个问题-NET-内
- 【As】Asp.net中的页面乱码的问题-sp--pn-ne-et
- 【增加记录】asp.net中获取新增加记录的ID Access
- 【创建】ASP.NET Web API教程 创建域模型的方法详
- 【Asp】Asp.net 页面调用javascript变量的值-net-
- 【ASP】ASP.NET 5升级后如何删除旧版本的DNX-NET5
- 【404页面】ASP.NET设置404页面返回302HTTP状态码
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
