使用 Asp.net 将 Excel 导入 DataTable
Posted
技术标签:
【中文标题】使用 Asp.net 将 Excel 导入 DataTable【英文标题】:import Excel to DataTable with Asp.net 【发布时间】:2016-04-12 01:47:21 【问题描述】:当我使用excel表导入数据表时,需要同时导入SID、CREATE_DATETIME、MODIFY_DATETIME、CREATOR_SID(actorSId)...
但是在导入之后我只是得到了 excel 数据。那么如何同时导入呢?
我的代码在这里;
private void BindData(string strConn)
OleDbConnection objConn = new OleDbConnection(strConn);
objConn.Open();
// Get the data table containg the schema guid.
DataTable dt = null;
dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
objConn.Close();
//ISystemId SID
if (dt.Rows.Count > 0)
// Bind the sheets to the Grids
foreach (DataRow row in dt.Rows)
DataTable dt_sheet = null;
dt_sheet = getSheetData(strConn, row["TABLE_NAME"].ToString());
private DataTable getSheetData(string strConn, string sheet)
string sid = Convert.ToString(new SystemId());
string Ctime = Convert.ToDateTime(DateTime.Now).ToString("yyyyMMddhhmmss");
string Mtime = Convert.ToDateTime(DateTime.Now).ToString("yyyyMMddhhmmss");
string actorSId = Convert.ToString(WebPage.CurrentSysUserSId);
string query = "select * from [" + sheet + "]";
OleDbConnection objConn;
OleDbDataAdapter oleDA;
DataTable dt = new DataTable();
dt.Columns.Add("SID", typeof(string));
dt.Columns.Add("CREATE_DATETIME", typeof(string));
dt.Columns.Add("MODIFY_DATETIME", typeof(string));
dt.Columns.Add("CREATOR_SID", typeof(string));
dt.Columns.Add("MODIFIER_SID", typeof(string));
dt.Columns.Add("MARK_DELETED", typeof(string));
dt.Columns.Add("ENABLED", typeof(string));
dt.Columns.Add("SORT", typeof(int));
objConn = new OleDbConnection(strConn);
objConn.Open();
oleDA = new OleDbDataAdapter(query, objConn);
oleDA.Fill(dt);
objConn.Close();
oleDA.Dispose();
objConn.Dispose();
return dt;
那么,谁能帮帮我?
【问题讨论】:
【参考方案1】:我已经解决了我的问题。
更改以下代码而不是清晰地工作。
private DataTable getSheetData(string strConn, string sheet)
//string sid = Convert.ToString(new SystemId());
string Ctime = Convert.ToDateTime(DateTime.Now).ToString("yyyyMMddhhmmss");
string Mtime = Convert.ToDateTime(DateTime.Now).ToString("yyyyMMddhhmmss");
string actorSId = Convert.ToString(WebPage.CurrentSysUserSId);
string query = "select * from [" + sheet + "]";
OleDbConnection objConn;
OleDbDataAdapter oleDA;
DataTable dt = new DataTable();
dt.Columns.Add("SID", typeof(string));
dt.Columns.Add("CREATE_DATETIME", typeof(string));
dt.Columns.Add("MODIFY_DATETIME", typeof(string));
dt.Columns.Add("CREATOR_SID", typeof(string));
dt.Columns.Add("MODIFIER_SID", typeof(string));
dt.Columns.Add("MARK_DELETED", typeof(string));
dt.Columns.Add("ENABLED", typeof(string));
dt.Columns.Add("SORT", typeof(int));
objConn = new OleDbConnection(strConn);
objConn.Open();
DataSet dataSet = new DataSet();
oleDA = new OleDbDataAdapter(query, objConn);
oleDA.Fill(dt);
foreach (DataRow dr in dt.Rows) // search whole table
for (int i = 0; i < dt.Rows.Count - 1; i++)
if (dt.Rows.Count > i)
string sid = Convert.ToString(new SystemId());
var row = dt.Rows[i];
row["SID"] = sid;
row["CREATE_DATETIME"] = Ctime;
row["MODIFY_DATETIME"] = Mtime;
row["CREATOR_SID"] = actorSId;
row["MODIFIER_SID"] = 0;
row["MARK_DELETED"] = "N";
row["ENABLED"] = "Y";
row["SORT"] = 1;
objConn.Close();
oleDA.Dispose();
objConn.Dispose();
return dt;
【讨论】:
以上是关于使用 Asp.net 将 Excel 导入 DataTable的主要内容,如果未能解决你的问题,请参考以下文章
将 Excel 导入 SQL 将日期存储为 ASP.NET 中的数值
我是不是需要在服务器中安装 office 2007,以便我可以使用 ASP.NET 将 excel 2007 导入 SQL?