国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

使用NPOI組件完成的Excel導出導入(附源代碼,測試通過)

2019-11-17 03:23:29
字體:
來源:轉載
供稿:網友

使用NPOI組件完成的Excel導出導入(附源代碼,測試通過)

最近遇到一個Excel導入導出的問題,要支持winform和webform,這里我是一個認真嚴謹的coder,所以決定把這個記錄下來!和大家一起分享一下!如果需要的同學可以下載哦!

對于NPOI這個組件,大家可能都了解了吧!如果不了解的同學,還是百度一下吧!不然后面不太看懂的。

1.我封裝了這個類(ExcelHelper),該有的注釋我也都加上了,希望大家可以看得懂!如果有什么bug,可以反饋到我的郵箱:707055073@QQ.com

自己做了一個簡單的winform的小程序,主要就是Excel的導入和導出,大家可以下載看一下

方法解釋說明

ExcelToDataTable()--Excel轉換成DataTable--B/S和C/S都可以使用

ExcelToDataTable()--根據索引讀取Sheet表數據,默認讀取第一個sheet--B/S和C/S都可以使用

DataGridViewToExcel()--DataGridView導出到Excel文件--C/S

#region ExcelToDataTable(string strExcelFileName, string strSheetName) Excel轉換成DataTable--B/S和C/S都可以使用        /// <summary>        /// Excel轉換成DataTable        /// </summary>        /// <param name="strExcelFileName">文件路徑</param>        /// <param name="strSheetName">Excel中對應的sheet表單名稱,如:sheet1,sheet2</param>        /// <returns>數據集</returns>        [System.Diagnostics.CodeAnalysis.Supaccess.Read))            {                if (fileExt == ".xls")                    hssfworkbook = new HSSFWorkbook(file);                else if (fileExt == ".xlsx")                    xssfworkbook = new XSSFWorkbook(file);//初始化太慢了,不知道這是什么bug            }            if (hssfworkbook != null)            {                HSSFSheet sheet = (HSSFSheet)hssfworkbook.GetSheetAt(sheetIndex);                if (sheet != null)                {                    System.Collections.IEnumerator rows = sheet.GetRowEnumerator();                    HSSFRow headerRow = (HSSFRow)sheet.GetRow(0);                    int cellCount = headerRow.LastCellNum;                    for (int j = 0; j < cellCount; j++)                    {                        HSSFCell cell = (HSSFCell)headerRow.GetCell(j);                        dt.Columns.Add(cell.ToString());                    }                    for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)                    {                        HSSFRow row = (HSSFRow)sheet.GetRow(i);                        DataRow dataRow = dt.NewRow();                        for (int j = row.FirstCellNum; j < cellCount; j++)                        {                            if (row.GetCell(j) != null)                                dataRow[j] = row.GetCell(j).ToString();                        }                        dt.Rows.Add(dataRow);                    }                }            }            else if (xssfworkbook != null)            {                XSSFSheet xSheet = (XSSFSheet)xssfworkbook.GetSheetAt(sheetIndex);                if (xSheet != null)                {                    System.Collections.IEnumerator rows = xSheet.GetRowEnumerator();                    XSSFRow headerRow = (XSSFRow)xSheet.GetRow(0);                    int cellCount = headerRow.LastCellNum;                    for (int j = 0; j < cellCount; j++)                    {                        XSSFCell cell = (XSSFCell)headerRow.GetCell(j);                        dt.Columns.Add(cell.ToString());                    }                    for (int i = (xSheet.FirstRowNum + 1); i <= xSheet.LastRowNum; i++)                    {                        XSSFRow row = (XSSFRow)xSheet.GetRow(i);                        DataRow dataRow = dt.NewRow();                        for (int j = row.FirstCellNum; j < cellCount; j++)                        {                            if (row.GetCell(j) != null)                                dataRow[j] = row.GetCell(j).ToString();                        }                        dt.Rows.Add(dataRow);                    }                }            }            return dt;        }        #endregion        #region DataGridViewToExcel(DataGridView myDgv, string strHeaderText, string strFileName) DataGridView導出到Excel文件--C/S        /// <summary>        /// C/S Winform中DataGridView導出數據到Excel        /// </summary>        /// <param name="myDgv">DataGridView控件名稱</param>        /// <param name="saveFileName">保存的文件名稱,默認沒有,調用的時候最好加上,中英文都支持</param>        /// <param name="isOpen">導出后是否打開文件和所在文件夾</param>        /// <param name="saveFilePath">默認保存在“我的文檔”中,可自定義保存的文件夾路徑</param>        /// <param name="strHeaderText">Excel中第一行的標題文字,默認沒有,可以自定義</param>        /// <param name="titleNames">Excel中列名的數組,默認綁定GridView的列名</param>        public static void DataGridViewToExcel(DataGridView myDgv, string saveFileName = null, bool isOpen = false,            string saveFilePath = null, string strHeaderText = null, string[] titleNames = null)        {            using (MemoryStream ms = DataGridViewToExcel(myDgv, strHeaderText, titleNames))            {                if (string.IsNullOrEmpty(saveFileName)) //文件名為空                {                    saveFileName = DateTime.Now.Ticks.ToString();                }                if (string.IsNullOrEmpty(saveFilePath) || !System.IO.Directory.Exists(saveFilePath)) //保存路徑為空或者不存在                {                    saveFilePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); //默認在文檔文件夾中                }                string saveFullPath = saveFilePath + "http://" + saveFileName + ".xls";                if (System.IO.File.Exists(saveFullPath)) //驗證文件重復性                {                    saveFullPath = saveFilePath + "http://" + saveFileName +                                   DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss").Replace(":", "-").Replace(" ", "-") +                                   ".xls";                }                using (FileStream fs = new FileStream(saveFullPath, FileMode.Create, FileAccess.Write))                {                    byte[] data = ms.ToArray();                    fs.Write(data, 0, data.Length);                    fs.Flush();                }                if (isOpen)                {                    Process.Start(saveFullPath); //打開文件                    Process.Start(saveFilePath); //打開文件夾                }            }        }        #endregion
View Code

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 象山县| 长垣县| 拉孜县| 台中县| 岗巴县| 大荔县| 丹阳市| 灵台县| 南木林县| 崇左市| 开平市| 哈巴河县| 金堂县| 定州市| 丰台区| 苍南县| 穆棱市| 眉山市| 左贡县| 澄城县| 中卫市| 台南市| 铜梁县| 永安市| 兖州市| 海口市| 乐亭县| 千阳县| 乌兰察布市| 安丘市| 留坝县| 平陆县| 烟台市| 北碚区| 万源市| 卫辉市| 土默特右旗| 台安县| 北辰区| 昭苏县| 高要市|