操作excel

我操作的是2007个2010版本的excel

首先是读取

        /// <summary>
        /// 读取xls\xlsx格式的Excel文件的方法
        /// </summary>
        /// <param name="path">待读取Excel的全路径</param>
        /// <returns></returns>
        private DataTable ReaderExcelToTable(string path)
        {
            //连接字符串
            string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1';";
            // Office 07及以上版本 不能出现多余的空格 而且分号注意
            using (OleDbConnection conn = new OleDbConnection(connString))
            {
                conn.Open();
                //DataTable sheetsName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
                //    new object[] { null, null, null, "Table" });    //得到所有sheet的名字
                string danXuanTiName = "sheet1";
                string sql = string.Format("select * from [{0}]", danXuanTiName + "$");    //查询字符串
                OleDbDataAdapter dta = new OleDbDataAdapter(sql, connString);
                DataSet set = new DataSet();
                dta.Fill(set);
                return set.Tables[0];
            }
        }

 

写入excel

private void TableOutExcel(DataTable dt)
        {
            //指定要创建副本文件的路径和Name
            string filePath = Server.MapPath("/_Layouts/" + Guid.NewGuid().ToString() + ".xlsx");
            //根据现存模板文件创建副本
            File.Copy(Server.MapPath("/_Layouts/QuestionDemo.xlsx"), filePath);
            //使用OleDb连接副本
            OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=YES';");
            using (conn)
            {
                conn.Open();
                foreach (DataRow row in dt.Rows)
                {
                    OleDbCommand comd = new OleDbCommand("INSERT INTO [单选题$]([试题内容],[试题选项],[正确答案],[试题等级]) VALUES(@Question,@Option,@RAnser,@Drg)", conn);
                    comd.Parameters.AddWithValue("@Question", row[0].ToString());
                    comd.Parameters.AddWithValue("@Option", row[1].ToString());
                    comd.Parameters.AddWithValue("@RAnser", row[2].ToString());
                    comd.Parameters.AddWithValue("@Drg", row[3].ToString());
                    comd.ExecuteNonQuery();
                }
            }
            // 输出副本的二进制字节流
            Response.ContentType = "application/ms-excel";
            Response.AppendHeader("Content-Disposition", "attachment;filename=Question.xlsx");
            Response.BinaryWrite(File.ReadAllBytes(filePath));
            // 删除副本
            File.Delete(filePath);
        }

 

这个方法的做法是,先copy服务器上的一个模板,然后根据模板生成一个excel,然后添加数据,最后输出excel,让用户下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值