欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#基于NPOI操作Excel

 更新時間:2022年04月29日 11:31:58   作者:農碼一生  
這篇文章介紹了C#基于NPOI操作Excel的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

NPOI簡介

NPOI是指構建在POI 3.x版本之上的一個程序,NPOI可以在沒有安裝Office的情況下對Word或Excel文檔進行讀寫操作。

NPOI是一個開源的C#讀寫Excel、WORD等微軟OLE2組件文檔的項目。

優(yōu)勢

(一)傳統(tǒng)操作Excel遇到的問題:

1、如果是.NET,需要在服務器端裝Office,且及時更新它,以防漏洞,還需要設定權限允許.NET訪問COM+,如果在導出過程中出問題可能導致服務器宕機。

2、Excel會把只包含數(shù)字的列進行類型轉換,本來是文本型的,Excel會將其轉成數(shù)值型的,比如編號000123會變成123。

3、導出時,如果字段內容以“-”或“=”開頭,Excel會把它當成公式進行,會報錯。

4、Excel會根據(jù)Excel文件前8行分析數(shù)據(jù)類型,如果正好你前8行某一列只是數(shù)字,那它會認為該列為數(shù)值型,自動將該列轉變成類似1.42702E+17格式,日期列變成包含日期和數(shù)字的。

(二)使用NPOI的優(yōu)勢

1、您可以完全免費使用該框架

2、包含了大部分EXCEL的特性(單元格樣式、數(shù)據(jù)格式、公式等等)

3、專業(yè)的技術支持服務(24*7全天候) (非免費)

4、支持處理的文件格式包括xls, xlsx, docx.

5、采用面向接口的設計架構( 可以查看 NPOI.SS 的命名空間)

6、同時支持文件的導入和導出

7、基于.net 2.0 也支持xlsx 和 docx格式(當然也支持.net 4.0)

8、來自全世界大量成功且真實的測試Cases

9、大量的實例代碼

11、你不需要在服務器上安裝微軟的Office,可以避免版權問題。

12、使用起來比Office PIA的API更加方便,更人性化。

13、你不用去花大力氣維護NPOI,NPOI Team會不斷更新、改善NPOI,絕對省成本。

14、不僅僅對與Excel可以進行操作,對于doc、ppt文件也可以做對應的操作

NPOI之所以強大,并不是因為它支持導出Excel,而是因為它支持導入Excel,并能“理解”OLE2文檔結構,這也是其他一些Excel讀寫庫比較弱的方面。通常,讀入并理解結構遠比導出來得復雜,因為導入你必須假設一切情況都是可能的,而生成你只要保證滿足你自己需求就可以了,如果把導入需求和生成需求比做兩個集合,那么生成需求通常都是導入需求的子集,這一規(guī)律不僅體現(xiàn)在Excel讀寫庫中,也體現(xiàn)在pdf讀寫庫中,目前市面上大部分的pdf庫僅支持生成,不支持導入。

操作Excel

        /// <summary>
        /// 基于NPOI操作Excel
        /// </summary>
        public void ExportExcel()
        {
            string filePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\Excel\\";
            string fileName = filePath + "TestExcel_" + DateTime.UtcNow.ToString("yyyyMMddHHmmss") + ".xlsx";
            if (!Directory.Exists(filePath))
            {
                Directory.CreateDirectory(filePath);
            }

            using (FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite))
            {
                XSSFWorkbook workbook = new XSSFWorkbook();

                //創(chuàng)建單元格樣式
                ICellStyle cellStyle = workbook.CreateCellStyle();

                //設置為文本格式,也可以為 text,即 dataFormat.GetFormat("text");
                cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;    //下邊框線
                cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;      //左邊框線
                cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;     //右邊框線
                cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;       //上邊框線

                //設置頁簽名
                ISheet sheet = workbook.CreateSheet("導出號段");

                //設置列寬
                sheet.SetColumnWidth(4, 10 * 500);//第五列 BTMAC
                sheet.SetColumnWidth(5, 10 * 500);//第六列 WifiMAC1
                sheet.SetColumnWidth(6, 10 * 500);//第七列 WifiMAC2
                sheet.SetColumnWidth(7, 10 * 500);//第八列 HARD_CODE
                sheet.SetColumnWidth(8, 10 * 500);//第九列 QR_CODE

                //Excel表頭欄位
                string[] excelHeader = new string[] { "IMEI1", "IMEI2", "MEID", "MSN編號", "藍牙MAC地址", "無線MAC地址1", "無線MAC地址2", "HARD_CODE", "QR_CODE", "TOKEN", "KEYMASTER" };
                //設置表頭字段
                IRow headerRow = sheet.CreateRow(0);
                for (int i = 0; i < excelHeader.Length; i++)
                {
                    headerRow.CreateCell(i).SetCellValue(excelHeader[i]);
                }

                //展開的數(shù)量
                int count = int.Parse(LoginInfo.QTY);

                //十六進制轉為十進制
                Int64 StarthardCode = Int64.Parse(LoginInfo.HardCode, NumberStyles.HexNumber);
                Int64 StartbtMAC = Int64.Parse(LoginInfo.BTMAC, NumberStyles.HexNumber);
                Int64 StartWifiMAC1 = Int64.Parse(LoginInfo.WiFiMAC1, NumberStyles.HexNumber);
                Int64 StartWifiMAC2 = 0;
                if (LoginInfo.IsEnableWiFiMAC2)
                {
                    StartWifiMAC2 = Int64.Parse(LoginInfo.WiFiMAC2, NumberStyles.HexNumber);
                }


                //填充Excel
                for (int i = 0; i < count; i++)
                {
                    IRow row = sheet.CreateRow(i + 1);
                    //BTMAC
                    Int64 current_btMAC = StartbtMAC + i;
                    //轉回十六進制,大寫
                    //string strCurrent_btMAC = Convert.ToString(current_btMAC, 16).ToUpper();
                    string strCurrent_btMAC = current_btMAC.ToString("X").ToUpper();
                    row.CreateCell(4).SetCellValue(strCurrent_btMAC);


                    //WifiMAC1
                    Int64 current_WifiMAC1 = StartWifiMAC1 + i;
                    //轉回十六進制,大寫
                    string strCurrent_WifiMAC1 = current_WifiMAC1.ToString("X").ToUpper();
                    row.CreateCell(5).SetCellValue(strCurrent_WifiMAC1);


                    //WifiMAC2
                    if (LoginInfo.IsEnableWiFiMAC2)
                    {
                        Int64 current_WifiMAC2 = StartWifiMAC2 + i;
                        //轉回十六進制,大寫
                        string strCurrent_WifiMAC2 = current_WifiMAC2.ToString("X").ToUpper();
                        row.CreateCell(6).SetCellValue(strCurrent_WifiMAC2);

                    }

                    //HardCode
                    Int64 current_HardCode = StarthardCode + i;
                    //轉回十六進制,小寫
                    string strCurrent_HardCode = current_HardCode.ToString("X").ToLower();
                    row.CreateCell(7).SetCellValue(strCurrent_HardCode);

                }

                workbook.Write(fs);           //寫入到Excel中          
            }
        }

到此這篇關于C#基于NPOI操作Excel的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論