在asp中如何把表格数据导入到Excel里

  在不久前,才使用asp的winform做了一个小型项目。其中就有遇到这个问题。如何把表格里的数据导入到Excel里,一开始想的是把gridview里的内容直接导入到Excel里,后来发现效果并不理想。后来发现直接导入dataset里的数据更好。我也借鉴了很多资料,发现都存在有部分的问题。所以希望写这个博客给后来者减少一点弯路,提供一些帮助。同时感谢大象大象你的鼻子怎么这么长给与我的帮助!
  话不多说,先上截图。
  表格数据截图
  表格是使用asp的gridview控件搭配sqldatasource控件写的,样式用的是bootstrap。
在这里插入图片描述
  导入Excel效果截图
  把后台dataset查询到的数据都导出到Excel里在这里插入图片描述
  查询数据的代码

        private OleDbConnection conn = null;
        private OleDbCommand cmd = null;
        private OleDbDataAdapter da;
        static DataSet datasetF = new DataSet();
        static int RecordIndex;
        private string sql;
        public void QueryData1(string sqlstr)
        {
            conn = new OleDbConnection();
            conn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + Server.MapPath("db\\manager1.mdb");
            conn.Open();
            da = new OleDbDataAdapter(sqlstr, conn);
            datasetF.Clear();
            DataSet datasetX = new DataSet();
            datasetX.Clear();
            da.Fill(datasetX, "QryData");
            datasetF = datasetX.Copy();
            GridView1.DataSource = datasetX;
            Session["yuangong"] = GridView1.DataSource;
            GridView1.DataSourceID = null;
            GridView1.DataBind();
            conn.Close();
        }

  导出到Excel的代码

        public bool DataSetToExcel(DataSet dataSet, bool isShowExcle)
        //dataset是上面存放数据的dataset,isShowExcel表示导出后是否自动打开Excel
        {
            DataTable dataTable = dataSet.Tables[0];
            int rowNumber = dataTable.Rows.Count;
            int columnNumber = dataTable.Columns.Count;

            if (rowNumber == 0)
            {
                return false;
            }

            //建立Excel对象 
            Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
            excel.Application.Workbooks.Add(true);
            excel.Visible = isShowExcle;//是否打开该Excel文件 

            //填充数据 
            for (int c = 0; c < rowNumber; c++)
            {
                for (int j = 0; j < columnNumber; j++)
                {
                    excel.Cells[c + 1, j + 1] = dataTable.Rows[c].ItemArray[j];
                }
            }

            return true;
        }

  关于使用Microsoft.Office.Interop.Excel.Application类会报红的解决
  之所以会报红,是因为项目中没有这个类的引用。按照下面的步骤添加引用即可。
  1、在项目中找到引用,选择添加引用。
在这里插入图片描述
  2、在COM中,找到Microsoft.Office.Excel的引用进行添加
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/hailongcsdn/article/details/106878677