C#读取Excel显示到repeater中

首先需要一个用来存储我们需要显示的内容,防止页面回发丢失(添加时使用)

#region 缓存文件

        private DataTable excelData;

        /// <summary>
        /// 缓存已经读取过的Datatable
        /// </summary>
        public DataTable ExcelData
        {
            get
            {
                if (ViewState["mydata"] != null)
                {
                    excelData = (DataTable)ViewState["mydata"];
                }
                return excelData;
            }
            set
            {
                ViewState["mydata"] = value;
            }
        }

        #endregion

接下来检查上传文件

 /// <summary>
        /// 检查文件上传
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        public string CheckFile(string fileName)
        {
            if (string.IsNullOrEmpty(fileName))
            {
                return "Please ensure that you upload file exists!";
            }
            if (!fileName.ToLower().EndsWith(".xls") && !fileName.ToLower().EndsWith(".xlsx"))
            {
                return "You select the file format is not correct, please try again!";
            }
            if (fileName.IndexOf(".") <= 0)
            {
                return "Please select a file to upload!";
            }
            return "";
        }
 /// <summary>
        /// 连接Excel,并读取数据源
        /// </summary>
        /// <param name="filepath">数据源路径</param>
        /// <returns>Excel文件的工作薄里的数据</returns>
        public DataSet connExcel(string filepath)
        {
            if (!string.IsNullOrEmpty(filepath))
            {
                try
                {
                    string connstring = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + filepath + ";Extended Properties=‘Excel 12.0; HDR=Yes; IMEX=1‘"; //此连接可以操作.xls与.xlsx文件 (支持Excel2003 和 Excel2007 的连接字符串)
                    OleDbConnection objconn = new OleDbConnection(connstring);
                    objconn.Open();
                    DataTable dt = objconn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "table" });
                    string sheetname = "Sheet1$";
                    sheetname = dt.Rows[0]["TABLE_NAME"].ToString();
                    objconn.Close();
                    string strsql = "select * from [" + sheetname + "]";
                    DataSet ds = new DataSet();
                    OleDbDataAdapter adp = new OleDbDataAdapter(strsql, objconn);
                    adp.Fill(ds);
                    return ds;
                }
                catch (Exception ex)
                {
                    throw new Exception("Occurs when a data source connection:" + ex.Message);
                }
            }
            else
            {
                throw new Exception("File does not exist!");
            }
        }
 /// <summary>
        /// 读取Excel
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        private DataTable readExcel(string path)
        {
            DataTable dt = new DataTable("myTestTable");
            dt.Columns.Add("ID");
            dt.Columns.Add("Name");
            dt.Columns.Add("Sex");
            DataView dv = new DataView(dt);
            DataSet ds = connExcel(path);
            return ds.Tables[0];
        }
/// <summary>
        /// 上传文件的方法
        /// </summary>
        /// <returns></returns>
        [ScriptMethod]
        private void PreviewData()
        {
            //获取文件名
            string fileName = Path.GetFileName(this.fileSave.PostedFile.FileName);
            //检索文件
            string message = CheckFile(fileName);
            if (!string.IsNullOrEmpty(message))
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "ok", "alert(‘" + message + "‘)", true);
                return;
            }
            try
            {
                string path = Server.MapPath("/MyTest/ExcelData/");
                //文件是否存在,如果不存在则创建
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                //定义文件的随机数
                Random rand = new Random();
                path += rand.Next(0, 9999999) + DateTime.Now.Hour + DateTime.Now.Minute + fileName;
                //上传文件
                this.fileSave.PostedFile.SaveAs(path);
                //将数据内容保存到缓存中
                ExcelData = this.readExcel(path);
                this.rptData.Visible = true;
                this.rptData.DataSource = ExcelData;
                this.rptData.DataBind();
            }
            catch (Exception ex)
            {
                throw ex;
                //Page.ClientScript.RegisterStartupScript(this.GetType(), "no", "alert(‘" + ex.Message + "‘)", true);
            }
        }
时间: 2024-10-13 22:30:47

C#读取Excel显示到repeater中的相关文章

WinForm 读取Excel 数据显示到窗体中

最近教学中,需要用到WinForm 读取Excel数据,于是就做了一个简单的,废话不多说,直接codding... 1 //读取Excel的帮助类 2 class SqExcellHelper 3 { 4 public static DataTable GetData(string tablename) 5 { 6 DataTable dtEmp = new DataTable(tablename); 7 OleDbConnection con = new OleDbConnection();

thinkphp用phpexcel读取excel,并修改列中的值,再导出excel,带往excel里写入图片

<?php class GetpriceAction extends AdministratorAction { // 文件保存路径 protected $savepath; // 允许上传的文件类型 protected $allowFileType; public function _initialize(){ parent::_initialize(); $this->savepath = './xxx/'.date('Ymd').'/'; $this->allowFileType

C#读取excel数据到datatable中

1 DataTable dtGBPatient = new DataTable(); 2 3 string strConn;string excelName; 4 5 //注意:把一个excel文件看做一个数据库,一个sheet看做一张表.语法 "SELECT * FROM [sheet1$]",表单要使用"[]"和"$" 6 7 // 1.HDR表示要把第一行作为数据还是作为列名,作为数据用HDR=no,作为列名用HDR=yes: 8 // 2

C#读取Excel技术概览

参考文章 C#读取Excel的五种方式体会 1. OleDb 用这种方法读取Excel速度还是非常的快的,但这种方式读取数据的时候不太灵活.不过可以在 DataTable 中对数据进行一些删减.修改.这种方式将Excel作为一个数据源,直接用Sql语句获取数据了.所以读取之前要知道此次要读取的Sheet(当然也可以用序号,类似dt.Row[0][0].这样倒是不需要知道Sheet). if (fileType == ".xls") connStr = "Provider=Mi

C#读取Excel 几种方法的体会

(1) OleDb: 用这种方法读取Excel速度还是非常的快的,但这种方式读取数据的时候不太灵活,不过可以在 DataTable 中对数据进行一些删减修改 这种方式将Excel作为一个数据源,直接用Sql语句获取数据了.所以读取之前要知道此次要读取的Sheet(当然也可以用序号,类似dt.Row[0][0].这样倒是不需要知道Sheet) if (fileType == ".xls")    connStr = "Provider=Microsoft.Jet.OLEDB.4

读取Excel文件的两种方法

第一种方法:传统方法,采用OleDB读取EXCEL文件, 优点:写法简单,缺点:服务器必须安有此组件才能用,不推荐使用 private DataSet GetConnect_DataSet2(string fileName) { DataSet myDataSet = new DataSet(); //创建一个数据链接 string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + fileName +

java用POI读取excel时date类型出现的问题

最近用poi读取excel并传入数据库中,但是出现了一个非常奇葩的问题,一直困扰了我很久 就是读取时date类型出现年份和日读取正确,但是月份为00的情况,我冥思苦想了很找了久,一直找不到原因 今天突然发现时自己粗心导致的 之前的错误代码: Date time=new Date(); time=cell.getDateCellValue(); //按指定格式输出 SimpleDateFormat df=new SimpleDateFormat("yyyy/mm/dd hh:mm:ss"

ASP.NET中读取excel内容并显示

项目中经常会用到把excel的文件内容导入到数据库中的,刚刚花了点时间,做了个例子,基本上能实现导入Excel后显示的功能吧,导入的excel文件得是xls,即是2003的.     代码思路如下:要读取的excel文件必得得是在本地硬盘,所以一般来说都是让远程用户选择自己硬盘上的Excel文件,然后把用户选择的文件上传到本地服务器上,再在本地服务器上进行操作.我把界面后置代码重要部分贴出来,大家自己慢慢看吧,都有注释了. C#代码   // 上传按钮 protected void btnUp_

读取Excel文件内容在Web上显示

点击事件代码.cs protected void Button1_Click(object sender, EventArgs e) { string strPath = "d:/test.xls"; string mystring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = '" + strPath + "';Extended Properties='Excel 8.0;HDR=Yes;IMEX=