读取excel文件解决空行的问题 excel数据库NPOI数据 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我不用 npoi。Excel的编程模型都是一致的,所以你可以去 Excel-Home 之类的论坛去先学习 vba for excel 编程,用excel自身“录制宏”,然后再学习使用其他开发平台操作它。对于使用 .net 框架内置的原生 Excel 对象框架来说,你应该首先选择行结束,然后再读取。例如var st = workbook.Worksheets["我的工作表"];var start = st.Range["A12"];var end = start.End[excel.XlDirection.xlDown];var datas = (object[,])st.Range[start, end].Value2;这样就把一列数据读入一个 object[,] 数组中。再比如说写var maxN = worksheet.Range["A1"].End[excel.XlDirection.xlDown].Row;这就找到 A1 下边的数据结束行。 读取excel文件数据到数据库问题//连接数据库 public OleDbConnection CreateCon() { string strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + Server.MapPath("UserScore.mdb") + ";User Id=admin;Password=;"; OleDbConnection odbc = new OleDbConnection(strconn); return odbc; }//显示excel文件数据protected void Button2_Click(object sender, EventArgs e) { string sqlstr = "select * from Score"; OleDbConnection conn = CreateCon(); conn.Open(); OleDbCommand mycom = new OleDbCommand(sqlstr, conn); OleDbDataReader dr = mycom.ExecuteReader(); dr.Read(); if (dr.HasRows) { GetDataSet(sqlstr); } else { Label1.Visible = true; Label1.Text = "<script language=javascript>alert('数据库中没有数据信息,请先导入再查询!');location='ExcelToAccess.aspx';</script>"; } dr.Close(); conn.Close(); }//将excel文件数据导入到Aceess数据库并绑定控件示例 protected void ExcelToAccess_Click(object sender, EventArgs e) { //定义Excel列表 string StyleSheet = "Sheet1"; //调用自定义LoadData方法,将Excel文件中数据读到ASPNET页面中 LoadData(StyleSheet); //定义查询的SQL语句 string sql = "select ID,用户姓名,试卷,成绩,考试时间 from Score"; //创建Oledb数据库连接 OleDbConnection con = CreateCon(); con.Open();//打开数据库连接 OleDbCommand com = new OleDbCommand(sql, con); //开始事务 OleDbTransaction tran = con.BeginTransaction(); com.Transaction = tran; //创建适配器 OleDbDataAdapter da = new OleDbDataAdapter(com); OleDbCommandBuilder cb = new OleDbCommandBuilder(da); //创建DataSet数据集 DataSet ds = new DataSet(); //填充数据集 da.Fill(ds); int curIndex = 0; if (ds.Tables[0].Rows.Count > 0) { curIndex = Convert.ToInt32(ds.Tables[0].Rows[0][0]); } //创建一个内存表 DataTable tb = this.getExcelDate(); string selsql = ""; for (int i = 0; i < tb.Rows.Count; i++) { string UserName = tb.Rows[i][0].ToString(); selsql = "select count(*) from Score where 用户姓名='" + UserName + "'"; } //判断Excel文件中是否已经导入到Access数据库中 if (ExScalar(selsql) > 0) { Label1.Visible = true; Label1.Text = "<script language=javascript>alert('该Excle中的数据已经导入数据库中!');location='ExcelToAccess.aspx';</script>"; } else { //循环读取Excel文件中数据,并添加到Access事先创建好的数据库表中 for (int i = 0; i < tb.Rows.Count; i++) { DataRow dr = ds.Tables[0].NewRow(); dr[0] = ++curIndex; dr[1] = tb.Rows[i][0]; dr[2] = tb.Rows[i][1]; dr[3] = tb.Rows[i][2]; dr[4] = tb.Rows[i][3]; ds.Tables[0].Rows.Add(dr); } try { da.Update(ds);//执行插入操作 tran.Commit();//事务提交 Label1.Visible = true; Label1.Text = "<script language=javascript>alert('数据导入成功!');location='ExcelToAccess.aspx';</script>"; } catch { tran.Rollback();//事务回滚 Label1.Visible = true; Label1.Text = "<script language=javascript>alert('数据导入失败!');location='ExcelToAccess.aspx';</script>"; } finally { con.Close();//关闭数据库连接 } } } 空行,读取出来,在filter一下,把空行过滤掉 学了很久C/S,现在要用B/S了,请问大家需要看看什么书或资料呢,谢谢,四点结贴! 请问怎么设置子窗体的显示位置? C#还原原来皮肤 用C#可以调用C的数据结构吗? C#的程序运行时能够自动播放背景音乐怎么实现 生成html文件的时候提示对路径“E:\s\elsrbc.html”的访问被拒绝。 axRealAudio控件只能放声音,请问怎么显示图像啊?急! 关于在C#中正确地写SQL server语言问题,求详细指导。最好有实例。 初学者问题:怎么样才能使 【按钮】保持按下状态 直到再次click?就象【开关】一样 我的困惑 一个16进制显示问题 初学者求助,关于form之间数据传递
Excel的编程模型都是一致的,所以你可以去 Excel-Home 之类的论坛去先学习 vba for excel 编程,用excel自身“录制宏”,然后再学习使用其他开发平台操作它。对于使用 .net 框架内置的原生 Excel 对象框架来说,你应该首先选择行结束,然后再读取。例如var st = workbook.Worksheets["我的工作表"];
var start = st.Range["A12"];
var end = start.End[excel.XlDirection.xlDown];
var datas = (object[,])st.Range[start, end].Value2;
这样就把一列数据读入一个 object[,] 数组中。再比如说写var maxN = worksheet.Range["A1"].End[excel.XlDirection.xlDown].Row;
这就找到 A1 下边的数据结束行。
//连接数据库
public OleDbConnection CreateCon()
{
string strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + Server.MapPath("UserScore.mdb") + ";User Id=admin;Password=;";
OleDbConnection odbc = new OleDbConnection(strconn);
return odbc;
}
//显示excel文件数据
protected void Button2_Click(object sender, EventArgs e)
{
string sqlstr = "select * from Score";
OleDbConnection conn = CreateCon();
conn.Open();
OleDbCommand mycom = new OleDbCommand(sqlstr, conn);
OleDbDataReader dr = mycom.ExecuteReader();
dr.Read();
if (dr.HasRows)
{
GetDataSet(sqlstr);
}
else
{
Label1.Visible = true;
Label1.Text = "<script language=javascript>alert('数据库中没有数据信息,请先导入再查询!');location='ExcelToAccess.aspx';</script>";
}
dr.Close();
conn.Close();
}
//将excel文件数据导入到Aceess数据库并绑定控件示例
protected void ExcelToAccess_Click(object sender, EventArgs e)
{
//定义Excel列表
string StyleSheet = "Sheet1";
//调用自定义LoadData方法,将Excel文件中数据读到ASPNET页面中
LoadData(StyleSheet);
//定义查询的SQL语句
string sql = "select ID,用户姓名,试卷,成绩,考试时间 from Score";
//创建Oledb数据库连接
OleDbConnection con = CreateCon();
con.Open();//打开数据库连接
OleDbCommand com = new OleDbCommand(sql, con);
//开始事务
OleDbTransaction tran = con.BeginTransaction();
com.Transaction = tran;
//创建适配器
OleDbDataAdapter da = new OleDbDataAdapter(com);
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
//创建DataSet数据集
DataSet ds = new DataSet();
//填充数据集
da.Fill(ds);
int curIndex = 0;
if (ds.Tables[0].Rows.Count > 0)
{
curIndex = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
}
//创建一个内存表
DataTable tb = this.getExcelDate();
string selsql = "";
for (int i = 0; i < tb.Rows.Count; i++)
{
string UserName = tb.Rows[i][0].ToString();
selsql = "select count(*) from Score where 用户姓名='" + UserName + "'";
}
//判断Excel文件中是否已经导入到Access数据库中
if (ExScalar(selsql) > 0)
{
Label1.Visible = true;
Label1.Text = "<script language=javascript>alert('该Excle中的数据已经导入数据库中!');location='ExcelToAccess.aspx';</script>";
}
else
{
//循环读取Excel文件中数据,并添加到Access事先创建好的数据库表中
for (int i = 0; i < tb.Rows.Count; i++)
{
DataRow dr = ds.Tables[0].NewRow();
dr[0] = ++curIndex;
dr[1] = tb.Rows[i][0];
dr[2] = tb.Rows[i][1];
dr[3] = tb.Rows[i][2];
dr[4] = tb.Rows[i][3];
ds.Tables[0].Rows.Add(dr);
}
try
{
da.Update(ds);//执行插入操作
tran.Commit();//事务提交
Label1.Visible = true;
Label1.Text = "<script language=javascript>alert('数据导入成功!');location='ExcelToAccess.aspx';</script>";
}
catch
{
tran.Rollback();//事务回滚
Label1.Visible = true;
Label1.Text = "<script language=javascript>alert('数据导入失败!');location='ExcelToAccess.aspx';</script>";
}
finally
{
con.Close();//关闭数据库连接
}
}
}