“NPOI” 實現“Excel”匯入

來源:互聯網
上載者:User
“NPOI” 可以實現“Excel”檔案的匯出和匯入。這裡主要指office2003的“.XSL”檔案,而不是office2007的“.XSLX”檔案的匯入,如果可以相容office2007了話,還請指教。

一、前台分頁檔格式判斷

      function checkType() {

       //得到上傳檔案的值        var fileName = document.getElementById("ful_ImportIn").value;        //返回String對象中子字串最後出現的位置.        var seat = fileName.lastIndexOf(".");        //返回位於String對象中指定位置的子字串並轉換為小寫.        var extension = fileName.substring(seat).toLowerCase();        //判斷允許上傳的檔案格式              //var allowed=[".jpg",".gif",".png",".bmp",".jpeg"];        var allowed = [".xls"];        for (var i = 0; i < allowed.length; i++) {            if (!(allowed[i] != extension)) {                return true;            }        }        alert("不支援" + extension + "格式");        return false;

   } 

 

 <asp:FileUpload ID="ful_ImportIn" runat="server" Width="181px" />&nbsp;<asp:Button      ID="Bt_ImportIn" runat="server" Text="確定" onclick="Bt_ImportIn_Click" OnClientClick="checkType()" />   

 

二、後台代碼

         if (ful_ImportIn.HasFile)

        {            try            {                //string path=ful_ImportIn.F                using (Stream file = ful_ImportIn.FileContent)                {                    hssfworkbook = new HSSFWorkbook(file);                }                ConvertToDataTable();            }            catch (Exception ex)            {                //JScript.Alert(ex.Message);                //JScript.Alert("Excel表格格式有誤!");            }        }        else        {                     }            }    void ConvertToDataTable()    {        ISheet sheet = hssfworkbook.GetSheetAt(0);        System.Collections.IEnumerator rows = sheet.GetRowEnumerator();        //DataTable dt = new DataTable();        //for (int j = 0; j < 5; j++)        //{        //    dt.Columns.Add(Convert.ToChar(((int)'A') + j).ToString());        //}        while (rows.MoveNext())        {            IRow row = (HSSFRow)rows.Current;            //DataRow dr = dt.NewRow();            string datime = "";            string davalue = "";            for (int i = 0; i < row.LastCellNum; i++)            {                ICell cell = row.GetCell(i);                if (i == 0)                {                    if (cell != null)                    {                        datime = cell.ToString();                    }                }                else                {                    if (i == 1)                    {                        if (cell != null)                        {                            davalue = cell.ToString();                        }                    }                }            }            simulationListManager.Add_ResualtList(P_ID, datime, davalue);            //dt.Rows.Add(dr);        }                //dataSet1.Tables.Add(dt);

    } 

 

 三、“Winform”程式碼範例,將Excel讀到“DataTable”,顯示到“DataGrid”下

     

        namespace ImportXlsToDataTable

{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        HSSFWorkbook hssfworkbook;        void InitializeWorkbook(string path)        {            //read the template via FileStream, it is suggested to use FileAccess.Read to prevent file lock.            //book1.xls is an Excel-2007-generated file, so some new unknown BIFF records are added.             using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))            {                hssfworkbook = new HSSFWorkbook(file);            }        }        void ConvertToDataTable()        {            ISheet sheet = hssfworkbook.GetSheetAt(0);            System.Collections.IEnumerator rows = sheet.GetRowEnumerator();            DataTable dt = new DataTable();            for (int j = 0; j < 5; j++)            {                dt.Columns.Add(Convert.ToChar(((int)'A')+j).ToString());            }            while (rows.MoveNext())            {                IRow row = (HSSFRow)rows.Current;                DataRow dr = dt.NewRow();                for (int i = 0; i < row.LastCellNum; i++)                {                    ICell cell = row.GetCell(i);                    if (cell == null)                    {                        dr[i] = null;                    }                    else                    {                        dr[i] = cell.ToString();                    }                }                dt.Rows.Add(dr);            }            dataSet1.Tables.Add(dt);        }        private void btnImport_Click(object sender, EventArgs e)        {            InitializeWorkbook(@"xls\Book1.xls");            ConvertToDataTable();            dataGridView1.DataSource = dataSet1.Tables[0];                                }        //switch(cell.CellType)        //{        //    case HSSFCellType.BLANK:        //        dr[i] = "[null]";        //        break;        //    case HSSFCellType.BOOLEAN:        //        dr[i] = cell.BooleanCellValue;        //        break;        //    case HSSFCellType.NUMERIC:        //        dr[i] = cell.ToString();    //This is a trick to get the correct value of the cell. NumericCellValue will return a numeric value no matter the cell value is a date or a number.        //        break;        //    case HSSFCellType.STRING:        //        dr[i] = cell.StringCellValue;        //        break;        //    case HSSFCellType.ERROR:        //        dr[i] = cell.ErrorCellValue;        //        break;        //    case HSSFCellType.FORMULA:        //    default:        //        dr[i] = "="+cell.CellFormula;        //        break;        //}    }}

 

 最後,加一分唄。   

源碼下載     

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.