ASP.NET C# 讀取 EXCEL 2003 及 2016

  • 2511
  • 0
  • 2017-07-19

網頁設定一個FILEUPLOAD及BUTTON,並在BUTTON ONCLICK事件中寫入讀取程式

使用元件 Microsoft.ACE.OLEDB.12.0 需另外下載 Microsoft Access Database Engine 2010 可轉散發套件
https://www.microsoft.com/zh-tw/download/details.aspx?id=13255

 protected void Button1_Click(object sender, EventArgs e)
    {
        if (FileUpload1.HasFile == true)
        {
            string pathname;
            string extname;
            string filename;
            string uploadname;
            string excelconnstr;
            
            if (FileUpload1.HasFile == true)
            {
                extname = Path.GetExtension(FileUpload1.PostedFile.FileName).Substring(1);
                filename = Path.GetFileNameWithoutExtension(FileUpload1.PostedFile.FileName);
                uploadname = Guid.NewGuid() + "." + extname;
                pathname = Server.MapPath("\\uploadfiles\\") + uploadname; //用GUID名稱+副檔案名為另存新檔的檔名
                int maxrow = 0;
                int maxcolum = 0;
                FileUpload1.SaveAs(pathname);
                switch (extname)
                {
                    case "xls":
                        excelconnstr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Server.MapPath("\\") + uploadname + ";" + "Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1\"";
                        break;

                    case "xlsx":
                        excelconnstr = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + Server.MapPath("\\") + uploadname + ";" + "Extended Properties='Excel 12.0;" + "HDR=NO;" + "IMEX=1'";
                        break;

                    default:
                        excelconnstr = "";
                        break;
                }
                if (string.IsNullOrEmpty(excelconnstr) == false)
                {
                    OleDbConnection excelconn = new OleDbConnection(excelconnstr);
                    OleDbCommand excelcmd = new OleDbCommand("select * from [產品數量清單$]", excelconn);
                    OleDbDataAdapter exceldr = new OleDbDataAdapter("select * from [產品數量清單$]", excelconn);
                    excelconn.Close();
                    excelconn.Open();
                    DataTable exceldt = new DataTable();
                    exceldr.Fill(exceldt);
                    maxrow = exceldt.Rows.Count;
                    maxcolum = exceldt.Columns.Count;
                    string temp = exceldt.Rows[1][0].ToString();//[列][欄]
                    for (int i = 3; i <= maxrow; i++)
                    {
                        for (int j = 1; j <= maxcolum; j++)
                        {
                        }
                    }
                }
            }
        }
    }