C#中怎样读取Excel文件到一个二维数组?
Excel文件中是n行×n列的整型数值,n事先不能确定还有,Excel文件是弹出一个对话框,要求用户导入的...
Excel文件中是n行×n列的整型数值,n事先不能确定
还有,Excel文件是弹出一个对话框,要求用户导入的 展开
还有,Excel文件是弹出一个对话框,要求用户导入的 展开
1个回答
展开全部
先把Excel文件读到Dataset里 然后去一个一个去读取!
以下是我的代码!
private void ImportData()
{
string name = "test.xls";
string type = name.Substring(name.LastIndexOf(".") + 1);
if (type == "xls" || type == "XLS")
FileUpload1.SaveAs(File_Url + name);
else
Response.Write(" <script language=javascript> alert( '打开的不是Excel格式文件! '); </script> ");
string mystring = "Provider=Microsoft.Jet.OleDb.4.0;data Source='" + File_Url + "test.xls';Extended Properties='Excel 8.0; HDR=YES; IMEX=1'";
OleDbConnection cnnxls = new OleDbConnection(mystring);
cnnxls.Open();
//获取Excel文件的sheet 表名
DataTable schemaTable = cnnxls.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
string tableName = schemaTable.Rows[0]["Table_Name"].ToString(); // 获取第一个表名
OleDbDataAdapter myDa = new OleDbDataAdapter("select * from [" + tableName + "$] ", cnnxls);
DataSet myDs = new DataSet();
myDa.Fill(myDs, "[" + tableName + "$]");
string addStr = null;
if (myDs.Tables[0].Rows.Count > 0)
{
try
{
for (int i = 0; i < myDs.Tables[0].Rows.Count; i++)
{
#region 用三个名称判断术语是否存在,要是存在就UPDATE下,不存在就插入数据(必须三种名字都一样)
DataSet countDs = CountTerm(myDs.Tables[0].Rows[i].ItemArray[0].ToString(),
myDs.Tables[0].Rows[i].ItemArray[1].ToString(),
myDs.Tables[0].Rows[i].ItemArray[2].ToString());
int l = countDs.Tables[0].Rows.Count;
if (countDs.Tables[0].Rows.Count == 0)
{
// 数据插入
addStr = AddTerm(ModuleID,
myDs.Tables[0].Rows[i].ItemArray[0].ToString(),
myDs.Tables[0].Rows[i].ItemArray[1].ToString(),
myDs.Tables[0].Rows[i].ItemArray[2].ToString(),
myDs.Tables[0].Rows[i].ItemArray[3].ToString(),
DateTime.Now,
PortalSettings.CurrentUser.Identity.Email);
}
#endregion
}
}
catch
{
}
finally
{
if (addStr == null)
addStr = "术语导入成功!";
cnnxls.Close();
deleteFiles(File_Url);
Response.Write(" <script language=javascript> alert( '" + addStr + "'); </script> ");
}
}
}
我这些是存入数据库的代码!你自己相应的改下就可以了1 。
以下是我的代码!
private void ImportData()
{
string name = "test.xls";
string type = name.Substring(name.LastIndexOf(".") + 1);
if (type == "xls" || type == "XLS")
FileUpload1.SaveAs(File_Url + name);
else
Response.Write(" <script language=javascript> alert( '打开的不是Excel格式文件! '); </script> ");
string mystring = "Provider=Microsoft.Jet.OleDb.4.0;data Source='" + File_Url + "test.xls';Extended Properties='Excel 8.0; HDR=YES; IMEX=1'";
OleDbConnection cnnxls = new OleDbConnection(mystring);
cnnxls.Open();
//获取Excel文件的sheet 表名
DataTable schemaTable = cnnxls.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
string tableName = schemaTable.Rows[0]["Table_Name"].ToString(); // 获取第一个表名
OleDbDataAdapter myDa = new OleDbDataAdapter("select * from [" + tableName + "$] ", cnnxls);
DataSet myDs = new DataSet();
myDa.Fill(myDs, "[" + tableName + "$]");
string addStr = null;
if (myDs.Tables[0].Rows.Count > 0)
{
try
{
for (int i = 0; i < myDs.Tables[0].Rows.Count; i++)
{
#region 用三个名称判断术语是否存在,要是存在就UPDATE下,不存在就插入数据(必须三种名字都一样)
DataSet countDs = CountTerm(myDs.Tables[0].Rows[i].ItemArray[0].ToString(),
myDs.Tables[0].Rows[i].ItemArray[1].ToString(),
myDs.Tables[0].Rows[i].ItemArray[2].ToString());
int l = countDs.Tables[0].Rows.Count;
if (countDs.Tables[0].Rows.Count == 0)
{
// 数据插入
addStr = AddTerm(ModuleID,
myDs.Tables[0].Rows[i].ItemArray[0].ToString(),
myDs.Tables[0].Rows[i].ItemArray[1].ToString(),
myDs.Tables[0].Rows[i].ItemArray[2].ToString(),
myDs.Tables[0].Rows[i].ItemArray[3].ToString(),
DateTime.Now,
PortalSettings.CurrentUser.Identity.Email);
}
#endregion
}
}
catch
{
}
finally
{
if (addStr == null)
addStr = "术语导入成功!";
cnnxls.Close();
deleteFiles(File_Url);
Response.Write(" <script language=javascript> alert( '" + addStr + "'); </script> ");
}
}
}
我这些是存入数据库的代码!你自己相应的改下就可以了1 。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询