【轉】NPOI 單元格級別應用

NPOI 單元格級別應用A

            HSSFWorkbook hssfworkbook = new HSSFWorkbook();//初始化一個新的HSSFWorkbook實例   


            //#region 1.建立一個空的Excel   
            ////*************************************建立一個空的Excel******************************************   
            ////HSSFSheet sheet = hssfworkbook.CreateSheet("new sheet");   
            ////hssfworkbook.CreateSheet("Sheet1");//必須加入建立Sheet的代碼才能保證生成的文件正常(若是須要多個,用一樣的方法,換個名字就能夠了)   
            //#endregion   


            //#region 2.建立單元格   
            ////*************************************建立單元格******************************************   
            ////要建立單元格首先要建立單元格所在的行,好比,下面的代碼建立了第0行:   
            //HSSFSheet sheet = hssfworkbook.CreateSheet("Sheet1");   
            //HSSFRow row1=sheet.CreateRow(0);//設置單元格行位置   
            ////行建好了,就能夠建單元格了,好比建立A1位置的單元格:   
            //row1.CreateCell(0).SetCellValue("Just for Test");//設置單元格列位置,並填寫參數   
            ////這裏要說明一下,SetCellValue有好幾種重載,你能夠設置單元格爲bool、double、DateTime、string和HSSFRichTextString類型。   
            ////其中對於string類型的重載調用的就是HSSFRichTextString類型的重載,因此是同樣的,HSSFRichTextString可用於有字體或者Unicode的文本。   

            ////若是你以爲每一行要聲明一個HSSFRow很麻煩,能夠用下面的方式:   
            ////sheet1.CreateRow(0).CreateCell(0).SetCellValue("This is a Sample");   
            ////這麼用有個前提,那就是第0行還沒建立過,不然得這麼用:   
            ////sheet1.GetRow(0).CreateCell(0).SetCellValue("This is a Sample");   
            ////注意:這裏的行在Excel裏是從1開始的,可是NPOI內部是從0開始的;   
            ////列在Excel裏面是用字母表示的,而NPOI中也是用從0開始的數字表示的,因此要注意轉換。   
            ////若是你要得到某一個已經建立的單元格對象,能夠用下面的代碼:   
            ////sheet1.GetRow(row_index).GetCell(column_index);   
            //#endregion   


            //#region 3.建立批註   
            ////**************************************建立批註******************************************   
            ////批註的位置和大小,在Excel中是與單元格密切相關的,NPOI中經過HSSFClientAnchor的實例來表示,它的構造函數比較複雜,有8個參數,它們分別是   
            ////dx1 第1個單元格中x軸的偏移量    
            ////dy1 第1個單元格中y軸的偏移量    
            ////dx2 第2個單元格中x軸的偏移量    
            ////dy2 第2個單元格中y軸的偏移量    
            ////col1 第1個單元格的列號    
            ////row1 第1個單元格的行號    
            ////col2 第2個單元格的列號    
            ////row2 第2個單元格的行號    

            ////若是咱們打算讓註釋顯示在B3和E5之間,就應該這麼寫:   
            //HSSFPatriarch patr = sheet.CreateDrawingPatriarch();   
            //HSSFComment comment1 = patr.CreateComment(new HSSFClientAnchor(0, 0, 0, 0, 1, 2 , 4, 4));   
            ////下面咱們設置這個批註的內容和做者,這個比較簡單:   
            //comment1.String = new HSSFRichTextString("Hello World");   
            //comment1.Author = "NPOI Team";   
            ////最後一步就是把批註賦給某個單元格:   
            //HSSFCell cell = sheet.CreateRow(1).CreateCell(0);   
            //cell.CellComment = comment1;   
            ////對於批註,你有兩種選擇,一種是隱藏(默認),一種是顯示(即表單一打開就顯示該批註),能夠經過comment1.Visible屬性來控制。   
            //#endregion   


            //#region 4.設置單元格格式   
            ////**************************************設置單元格格式******************************************   
            ////使用NPOI時要注意,全部的格式都是經過CellStyle.DataFormat賦給單元格的,而不是直接賦給單元格。   


            ////案例一 日期格式   
            ////假設咱們如今須要顯示的日期的格式爲2008年5月5日,能夠用下面的代碼生成:   
            ////HSSFSheet sheet1 = hssfworkbook.CreateSheet("new sheet");   
            //HSSFCell cell0 = sheet.CreateRow(2).CreateCell(0);   
            //cell0.SetCellValue(new DateTime(2008,5,5));   
            ////set date format   
            //HSSFCellStyle cellStyle = hssfworkbook.CreateCellStyle();   
            //HSSFDataFormat format = hssfworkbook.CreateDataFormat();   
            //cellStyle.DataFormat = format.GetFormat("yyyy年m月d日");   
            //cell0.CellStyle=cellStyle;   
            ////因爲這裏的「yyyy年m月d日」屬於自定義格式(區別於Excel內嵌的格式),   
            ////因此必須用hssfworkbook.CreateDataFormat()建立一個HSSFDataFormat實例,而後使用format.GetFormat來獲取相應的格式,   
            ////只要是Excel支持的格式表示方式,這種方式都可以實現。   


            ////案例二 保留2位小數   
            ////假設咱們有個單元格的值爲1.2,怎麼顯示成1.20呢?在Excel中能夠用「0.00」來表示,因此下面的代碼就能完成:   
            //// Create a row and put some cells in it. Rows are 0 based.   
            //HSSFCell cell1 = sheet.CreateRow(2).CreateCell(1);   
            ////set value for the cell   
            //cell1.SetCellValue(1.2);   
            ////number format with 2 digits after the decimal point - "1.20"   
            //HSSFCellStyle cellStyle1 = hssfworkbook.CreateCellStyle();   
            //cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00");   
            //cell.CellStyle = cellStyle;   
            ////這裏與上面有所不一樣,用的是HSSFDataFormat.GetBuiltinFormat()方法,之因此用這個,是由於0.00是Excel內嵌的格式,   
            ////完整的Excel內嵌格式列表你們能夠看EXCEL---設置單元格格式------數字   


            ////案例三 貨幣格式   
            ////貨幣格式在金融的項目中常常用到,好比說人民幣符號¥,美圓符號$等,這裏能夠用下面的代碼表示:   
            //HSSFCell cell2 = sheet.CreateRow(2).CreateCell(2);   
            //cell2.SetCellValue(20000);   
            //HSSFCellStyle cellStyle2 = hssfworkbook.CreateCellStyle();   
            //HSSFDataFormat format2 = hssfworkbook.CreateDataFormat();   
            //cellStyle2.DataFormat = format.GetFormat("¥#,##0");   
            //cell2.CellStyle = cellStyle2;   
            ////注意,這裏還加入了千分位分隔符,因此是#,##,至於爲何這麼寫,你得去問微軟,呵呵。   


            ////案例四 百分比   
            ////百分比在報表中也很經常使用,其實基本上和上面同樣,只是格式表示是0.00%,代碼以下:   
            //HSSFCell cell3 = sheet.CreateRow(2).CreateCell(3);   
            //cell3.SetCellValue(50);   
            //HSSFCellStyle cellStyle3 = hssfworkbook.CreateCellStyle();   
            //cellStyle3.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00%");   
            //cell3.CellStyle = cellStyle3;   
            ////因爲這裏是內嵌格式,因此直接用HSSFDataFormat.GetBuiltinFormat便可。   


            ////案例五 中文大寫   
            ////在表示金額時,咱們時常會用到,我也見過很多兄弟實現了數字轉中文大小寫的工具類,之後你能夠嘗試讓Excel去處理這一切,   
            ////代碼和剛纔差很少,也是改格式的表示:   
            //HSSFCell cell4 = sheet.CreateRow(2).CreateCell(4);   
            //cell4.SetCellValue("共和國");   
            //HSSFCellStyle cellStyle4 = hssfworkbook.CreateCellStyle();   
            //HSSFDataFormat format4 = hssfworkbook.CreateDataFormat();   
            //cellStyle4.DataFormat = format.GetFormat("[DbNum2][$-804]0");   
            //cell4.CellStyle = cellStyle4;   
            ////因爲是自定義格式,因此用了HSSFDataFormat.GetFormat,相信你對這兩種獲取格式的形式的區別愈來愈熟悉了。   


            ////案例六 科學計數法   
            ////這東西數學課上咱們都學過,雖然用的很少,可是既然Excel支持,這裏也提一下:   
            ////cellStyle3.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00E+00");   



            ///*最後總結一下HSSFDataFormat.GetFormat和HSSFDataFormat.GetBuiltinFormat的區別:   

            //當使用Excel內嵌的(或者說預約義)的格式時,直接用HSSFDataFormat.GetBuiltinFormat靜態方法便可。   

            //當使用本身定義的格式時,必須先調用HSSFWorkbook.CreateDataFormat(),由於這時在底層會先找有沒有匹配的內嵌FormatRecord,   
            //若是沒有就會新建一個FormatRecord,因此必須先調用這個方法,而後你就能夠用得到的HSSFDataFormat實例的GetFormat方法了,   
            //固然相對而言這種方式比較麻煩,因此內嵌格式仍是用HSSFDataFormat.GetBuiltinFormat靜態方法更加直接一些。   
            //不過自定義的格式也不是天馬行空隨便定義,仍是要參照Excel的格式表示來定義,具體請看相關的Excel教程。   

            //注意:自定義的FormatRecord是嵌入xls文件內部的,因此不用擔憂對方Excel中有沒有定義過這種格式,都是可以正常使用的。   
            // */   
            //#endregion   


            //#region 5.單元格合併   
            ////*************************************單元格合併******************************************   
            ////爲了實現這一功能,NPOI引入了新的概念,即Region,由於合併單元格,其實就是設定一個區域。下面說一下Region類的參數,Region總共有4個參數:   
            ////FirstRow 區域中第一個單元格的行號    
            ////FirstColumn 區域中第一個單元格的列號    
            ////LastRow 區域中最後一個單元格的行號    
            ////LastColumn 區域中最後一個單元格的列號    

            ////因爲單元格的合併都是在表的基礎上創建的,因此咱們得先建Sheet:   
            ////HSSFWorkbook hssfworkbook = new HSSFWorkbook();   
            //HSSFSheet sheet5 = hssfworkbook.CreateSheet("單元格合併");   
            ////接下來咱們根據實際場景來作一些演示。   


            ////場景一 標題行的合併   
            ////這種場景是最多見的,好比說咱們要創建一張銷售狀況表,英文叫Sales Report   
            ////咱們先設置居中和字體樣式,這裏咱們採用20號字體,代碼以下:   
            //HSSFRow row5 = sheet5.CreateRow(0);   
            //HSSFCell cell5 = row5.CreateCell(0);   
            //cell5.SetCellValue("Sales Report");   
            //HSSFCellStyle style5 = hssfworkbook.CreateCellStyle();   
            //style5.Alignment = HSSFCellStyle.ALIGN_CENTER;   
            //HSSFFont font5 = hssfworkbook.CreateFont();   
            //font5.FontHeight = 20*20;   
            //style5.SetFont(font5);   
            //cell5.CellStyle = style5;   
            ////要產生圖中的效果,即把A1:F1這6個單元格合併,而後添加合併區域:   
            //sheet5.AddMergedRegion(new Region(0, 0, 0, 5));   


            ////場景二 多行合併   
            ////看完場景一,你可不要認爲多行合併就須要一行一行作,其實也只須要一行代碼,好比說咱們要把C3:E5合併爲一個單元格,那麼就能夠用下面的代碼:   
            //sheet5.AddMergedRegion(new Region(2, 2, 4, 4));   
            ////提示 即便你沒有用CreateRow和CreateCell建立過行或單元格,也徹底能夠直接建立區域而後把這一區域合併,   
            ////Excel的區域合併信息是單獨存儲的,和RowRecord、ColumnInfoRecord不存在直接關係。   
            //#endregion   


            //#region 6.單元格對齊相關設置   
            ////*************************************單元格對齊相關設置******************************************   
            ////本節將圍繞「對齊」選項卡中的設置展開,雖然實際上你會發現該選項卡中的不少設置和對齊沒有什麼關係。   
            ////首先咱們用代碼建立必要的單元格,代碼以下:   
            ////HSSFWorkbook hssfworkbook = new HSSFWorkbook();   
            //HSSFSheet sheet6 = hssfworkbook.CreateSheet("單元格對齊相關設置");   
            //HSSFRow row6 = sheet6.CreateRow(0);   
            //row6.CreateCell(0).SetCellValue("Test");   
            ////這裏咱們假設在A0單元格中加入了文本Test。   
            ////請注意接下來咱們要作的全部操做都是在CellStyle的基礎上完成的,因此咱們建立一個HSSFCellStyle:   
            //HSSFCellStyle style6 = hssfworkbook.CreateCellStyle();   


            ////水平對齊   
            ////這裏用的是HSSFCellStyle.Alignment,默認值天然是常規,即HSSFCellStyle.ALIGN_GENERAL。   
            ////若是是左側對齊就是   
            //style6.Alignment = HSSFCellStyle.ALIGN_LEFT;   
            ////若是是居中對齊就是   
            //style6.Alignment = HSSFCellStyle.ALIGN_CENTER;   
            ////若是是右側對齊就是   
            //style6.Alignment = HSSFCellStyle.ALIGN_RIGHT;   
            ////若是是跨列舉中就是   
            //style6.Alignment = HSSFCellStyle.ALIGN_CENTER_SELECTION;   
            ////若是是兩端對齊就是   
            //style6.Alignment = HSSFCellStyle.ALIGN_JUSTIFY;   
            ////若是是填充就是   
            //style6.Alignment = HSSFCellStyle.ALIGN_Fill;   
            ////注意:以上選項僅當有足夠的寬度時才能產生效果,不設置寬度恐怕看不出區別。   


            ////垂直對齊   
            ////這裏用的是HSSFCellStyle.VerticalAlignment,默認值爲居中,即HSSFCellStyle.VERTICAL_CENTER   
            ////若是是靠上就是   
            //style6.VerticalAlignment = HSSFCellStyle.VERTICAL_TOP;   
            ////若是是居中就是   
            //style6.VerticalAlignment = HSSFCellStyle.VERTICAL_CENTER;   
            ////若是是靠下就是   
            //style6.VerticalAlignment = HSSFCellStyle.VERTICAL_BOTTOM;   
            ////若是是兩端對齊就是   
            //style6.VerticalAlignment = HSSFCellStyle.VERTICAL_JUSTIFY;   
            ////注意:以上選項僅當有足夠的高度時才能產生效果,不設置高度恐怕看不出區別。  git



 

POI 單元格級別應用B

           ////自動換行   
            ////自動換行翻譯成英文其實就是Wrap的意思,因此這裏咱們應該用WrapText屬性,這是一個布爾屬性   
            //style6.WrapText = true;   


            ////文本縮進   
            ////這是一個不太引人注意的選項,因此這裏給張圖出來,讓你們知道是什麼,縮進說白了就是文本前面的空白,咱們一樣能夠用屬性來設置,   
            ////這個屬性叫作Indention。   
            //style6.Indention = 3;   
                

            ////文本旋轉   
            ////文本方向你們必定在Excel中設置過,上圖中就是調整界面,主要參數是度數,那麼咱們如何在NPOI中設置呢?  
            //style6.Rotation=(short)90;   
            ////以上代碼是把單元格A1中的文本逆時針旋轉90度   
            ///*   
            // * 請注意,這裏的Rotation取值是從-90到90,而不是0-180度。   
            // * 最後別忘了把樣式變量style賦給HSSFCellStyle.CellStyle,不然就前功盡棄了,呵呵!   
            // * **/   
            //#endregion   


            //#region 7.設置單元格邊框   
            ////*************************************設置單元格邊框******************************************   
            ////邊框和其餘單元格設置同樣也是在HSSFCellStyle上操做的,HSSFCellStyle有2種和邊框相關的屬性,分別是:   
            ////邊框相關屬性 說明 範例    
            ////Border+方向 邊框類型 BorderTop, BorderBottom,BorderLeft, BorderRight    
            ////方向+BorderColor 邊框顏色 TopBorderColor,BottomBorderColor, LeftBorderColor, RightBorderColor    

            ////其中邊框類型分爲如下幾種:   
            ////邊框範例圖 對應的靜態值    
            //// HSSFCellStyle.BORDER_DOTTED    
            //// HSSFCellStyle.BORDER_HAIR    
            //// HSSFCellStyle.BORDER_DASH_DOT_DOT    
            //// HSSFCellStyle.BORDER_DASH_DOT    
            //// HSSFCellStyle.BORDER_DASHED    
            //// HSSFCellStyle.BORDER_THIN    
            //// HSSFCellStyle.BORDER_MEDIUM_DASH_DOT_DOT    
            //// HSSFCellStyle.BORDER_SLANTED_DASH_DOT    
            //// HSSFCellStyle.BORDER_MEDIUM_DASH_DOT    
            //// HSSFCellStyle.BORDER_MEDIUM_DASHED    
            //// HSSFCellStyle.BORDER_MEDIUM    
            //// HSSFCellStyle.BORDER_THICK    
            //// HSSFCellStyle.BORDER_DOUBLE    
            ////至於顏色那就不少了,所有在HSSFColor下面,如HSSFColor.GREEN, HSSFColor.RED,都是靜態實例,能夠直接引用。   
            ////下面咱們假設咱們要把一個單元格的四周邊框都設置上,能夠用下面的代碼:   

            //HSSFSheet sheet7 = hssfworkbook.CreateSheet("設置單元格邊框");   
            //// Create a row and put some cells in it. Rows are 0 based.   
            //HSSFRow row7 = sheet7.CreateRow(1);   
            //// Create a cell and put a value in it.   
            //HSSFCell cell7 = row7.CreateCell(1);   
            //// Style the cell with borders all around.   
            //HSSFCellStyle style7 = hssfworkbook.CreateCellStyle();   
            //style7.BorderBottom= HSSFCellStyle.BORDER_THIN;   
            //style7.BorderLeft= HSSFCellStyle.BORDER_THIN;   
            //style7.BorderRight= HSSFCellStyle.BORDER_THIN;   
            //style7.BorderTop = HSSFCellStyle.BORDER_THIN ;   
            //cell7.CellStyle= style7;   
            ////這段代碼使用了最普通的細邊框,使得這個單元格看上去像塊空心磚頭。   
            ////注意:這裏咱們沒有設置邊框的顏色,但這不會影響最終的效果,由於Excel會用默認的黑色給邊框上色。   
            ////若是要設置顏色的話,也很簡單,以下:   
            //style7.BottomBorderColor = HSSFColor.GREEN.index;   
            ////以上代碼將底部邊框設置爲綠色,要注意,不是直接把HSSFColor.GREEN賦給XXXXBorderColor屬性,而是把index的值賦給它。   
            //#endregion   


            //#region 8.設置單元格字體   
            ////*************************************設置單元格字體******************************************   
            ////本節咱們將繼續使用NPOI來設置單元格格式,這一節咱們主要講如何設置「字體」。   
            ////在設置字體以前,咱們首先要作的就是建立字體對象,這和建立數字格式很類似。   

            //HSSFFont font8 = hssfworkbook.CreateFont();   
            ////這句話會在Excel文件內部建立相應的FontRecord,因此你不用客戶由於本身機器上的Excel沒有相應的字體設置而致使設置丟失。   

            ////字體在設置完成後,咱們就能夠把它賦給單元格樣式,代碼以下:   
            //HSSFSheet sheet8 = hssfworkbook.CreateSheet("設置單元格字體");   
            //HSSFRow row8 = sheet8.CreateRow(0);   
            //HSSFCell cell8 = row8.CreateCell(0);   
            //HSSFCellStyle style8 = hssfworkbook.CreateCellStyle();   
            //style8.SetFont(font8);   
            //cell8.CellStyle=style8;   
            ////這裏的cell1是HSSFCell的一個實例。   

            ////好了,下面咱們就開始對字體進行設置。   
            ////字體名稱   


            ////這裏的字體名稱是經過HSSFFont.FontName進行設置的,至於具體的名稱,只要是經常使用字體均可以,好比說Arial, Verdana等   
            ////,固然也能夠是中文字體名,如宋體、黑體等。不過設置字體名稱有個前提,那就是假設打開這個xls文件的客戶機上有這種字體   
            ////,若是沒有,Excel將使用默認字體。   
            ////下面就是設置字體名稱爲「宋體」的代碼:   
            //font8.FontName = "宋體";   


            ////字號   
            ////與字號有關的屬性有兩個,一個是FontHeight,一個是FontHeightInPoints。區別在於,FontHeight的值是FontHeightInPoints的20倍   
            ////,一般咱們在Excel界面中看到的字號,好比說12,對應的是FontHeightInPoints的值,而FontHeight要產生12號字體的大小   
            ////,值應該是240。因此一般建議你用FontHeightInPoint屬性。   
            ////若是要設置字號爲12,代碼就是   
            //font8.FontHeightInPoints = 12;   
                

            ////字體顏色   
            ////這裏可能會與CellStyle上的ForegroundColor和BackgroundColor產生混淆,其實全部的字體顏色都是在HSSFFont的實例上設置的   
            ////,CellStyle的ForegroundColor和BackgroundColor分別指背景填充色和填充圖案的顏色,和文本顏色無關。   
            ////要設置字體顏色,咱們能夠用HSSFFont.Color屬性,顏色能夠經過HSSFColor得到,代碼以下所示:   
            //font8.Color = HSSFColor.RED.index;   
            ////這行代碼把文本設置爲紅色。   
                

            ////下劃線   
            ////一般咱們所說的下劃線都是單線條的,其實Excel支持好幾種下劃線,以下所示:   
            ////類型 對應的值    
            ////單下劃線 HSSFFont.U_SINGLE    
            ////雙下劃線 HSSFFont.U_DOUBLE    
            ////會計用單下劃線 HSSFFont.U_SINGLE_ACCOUNTING    
            ////會計用雙下劃線 HSSFFont.U_DOUBLE_ACCOUNTING    
            ////無下劃線 HSSFFont.U_NONE    
            ////當你要設置下劃線時,能夠用HSSFFont.Underline屬性,這是一個byte類型的值,例如   
            //font8.Underline = HSSFFont.U_SINGLE;   
            ////這行代碼就是設置單下劃線的代碼。   


            ////上標下標   
            ////設置這東西能夠用HSSFFont.TypeOffset屬性,值有如下幾種:   
            ////TypeOffset的值 說明    
            ////HSSFFont.SS_SUPER 上標    
            ////HSSFFont.SS_SUB 下標    
            ////HSSFFont.SS_NONE 普通,默認值    
            ////因此若是你要上標的話,能夠用下面的代碼:   
            //font8.TypeOffset=HSSFFont.SS_SUPER;   


            ////刪除線   
            ////設置這東西能夠用HSSFFont.IsStrikeout屬性,當爲true時,表示有刪除線;爲false則表示沒有刪除線。   
            //#endregion   


            //#region 9.設置單元格的背景和圖案   
            ////*************************************設置單元格的背景和圖案******************************************   
            ////在以前的教程中,咱們已經提到HSSFCellStyle有兩個背景顏色屬性,一個叫FillBackgroundColor,另外一個叫FillForegroundColor   
            ////,但其實這指的都是背景顏色,那爲何還有ForegroundColor呢?爲了可以幫助你們理解,咱們舉一個實際的例子   
            ////,下面這個圖案是Excel的一個單元格:(白線紅格的網格)   
            ////線是白色的,背景是紅色的。這裏的線其實就是下面的Excel界面中的圖案:   
            ////至於線的顏色則是圖案顏色,即白色。   
            ////因此以上單元格若是要用NPOI來設置就能夠用如下代碼完成:   
            ////fill background   
            //HSSFSheet sheet9 = hssfworkbook.CreateSheet("設置單元格的背景和圖案");   
            //HSSFCellStyle style9 = hssfworkbook.CreateCellStyle();   
            //style9.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.WHITE.index;   
            //style9.FillPattern = HSSFCellStyle.SQUARES;   
            //style9.FillBackgroundColor = NPOI.HSSF.Util.HSSFColor.RED.index;   
            //sheet9.CreateRow(7).CreateCell(0).CellStyle = style9;   
            ////如今是否是清楚一些了,這裏的FillPattern就圖案樣式,全部的枚舉值都是HSSFCellStyle的常量;FillForegroundColor就是圖案的顏色   
            ////,而FillBackgroundColor則是背景的顏色,即紅色。   
            //#endregion   


            //#region 10.設置單元格的寬度和高度   
            ////*************************************設置單元格的寬度和高度******************************************   
            ////在Excel中,單元格的寬度其實就是列的寬度,由於Excel假設這一列的單元格的寬度確定一致。因此要設置單元格的寬度   
            ////,咱們就得從列的寬度下手,HSSFSheet有個方法叫SetColumnWidth,共有兩個參數:一個是列的索引(從0開始),一個是寬度。   
            ////如今假設你要設置B列的寬度,就能夠用下面的代碼:   
            ////HSSFWorkbook hssfworkbook = new HSSFWorkbook();   
            //HSSFSheet sheet10 = hssfworkbook.CreateSheet("設置單元格的寬度和高度");   
            //sheet10.SetColumnWidth(1, 100 * 256);   
            ////這裏你會發現一個有趣的現象,SetColumnWidth的第二個參數要乘以256,這是怎麼回事呢?其實,這個參數的單位是1/256個字符寬度   
            ////,也就是說,這裏是把B列的寬度設置爲了100個字符。   
            ////剛纔說的是如何設置,那如何去讀取一個列的寬度呢?直接用GetColumnWidth方法,這個方法只有一個參數,那就是列的索引號。以下所示:   
            //int col1width = sheet10.GetColumnWidth(1);   
            ////說完寬度,咱們來講高度,在Excel中,每一行的高度也是要求一致的,因此設置單元格的高度,其實就是設置行的高度   
            ////,因此相關的屬性也應該在HSSFRow上,它就是HSSFRow.Height和HeightInPoints,這兩個屬性的區別在於HeightInPoints的單位是點   
            ////,而Height的單位是1/20個點,因此Height的值永遠是HeightInPoints的20倍。   
            ////要設置第一行的高度,能夠用以下代碼:   
            //sheet10.CreateRow(0).Height = 200*20;   
            ////或者   
            //sheet10.CreateRow(0).HeightInPoints = 200;   
            ////若是要得到某一行的行高,能夠直接拿HSSFRow.Height屬性的返回值。   
            ////你可能以爲一行一行設置行高或者一列一列設置列寬很麻煩,那你能夠考慮使用HSSFSheet.DefaultColumnWidth   
            ////、HSSFSheet.DefaultRowHeight和HSSFSheet.DefaultRowHeightInPoints屬性。   
            ////一旦設置了這些屬性,若是某一行或者某一列沒有設置寬度,就會使用默認寬度或高度。代碼以下:   
            //sheet10.DefaultColumnWidth=100*256;   
            //sheet10.DefaultRowHeight=30*20;   
            //#endregion   


            ////把HSSFWorkbook實例寫入文件   
            //FileStream file = new FileStream(Server.MapPath("test.xls"), FileMode.Create);   
            //hssfworkbook.Write(file);   
            //file.Close();   


            //*************************************基於模板******************************************   
            //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.    
            FileStream file11 = new FileStream(Server.MapPath("PayMain.xls"), FileMode.Open, FileAccess.Read);   

            HSSFWorkbook hssfworkbook11 = new HSSFWorkbook(file11);   
            HSSFSheet sheet11 = hssfworkbook11.GetSheet("Sheet2");   
            HSSFCellStyle style11 = hssfworkbook11.CreateCellStyle();   
            style11.BorderBottom = HSSFCellStyle.BORDER_THIN;   
            style11.BorderLeft = HSSFCellStyle.BORDER_THIN;   
            style11.BorderRight = HSSFCellStyle.BORDER_THIN;   
            style11.BorderTop = HSSFCellStyle.BORDER_THIN;   
            HSSFRow row11;   
            for (int i = 0; i < dt.Rows.Count; i++)   
            {   
                row11 = sheet11.CreateRow(7 + i);   
                for (int j = 0; j < 6; j++)   
                {   
                    HSSFCell cell11 = row11.CreateCell(j);   
                    cell11.SetCellValue(dt.Rows[i][j].ToString());   
                    cell11.CellStyle = style11;   
                }   
            }   

            row11 = sheet11.CreateRow(dt.Rows.Count + 7);   
            HSSFCell cell11_ = row11.CreateCell(0);   
            cell11_.SetCellValue("合計:");   
            cell11_ = row11.CreateCell(3);   
            cell11_.SetCellValue("建表人:");   
            //HSSFRow row11 = sheet11.CreateRow(7);   
            //HSSFCell cell10 = row11.CreateCell(0);   
            //HSSFCell cell11 = row11.CreateCell(1);   
            //HSSFCell cell12 = row11.CreateCell(2);   
            //HSSFCell cell13 = row11.CreateCell(3);   
            //HSSFCell cell14 = row11.CreateCell(4);   
            //HSSFCell cell15 = row11.CreateCell(5);   
            //cell10.SetCellValue("tessssss");   
            //cell11.SetCellValue("teffffff");   
            //cell12.SetCellValue("tegggggsss");   
            //cell13.SetCellValue("tesssssfwefsss");   
            //cell14.SetCellValue("tesssssfwefsss");   
            //cell15.SetCellValue("tesssssfwefsss");   
            //sheet11.GetRow(9).GetCell(0).SetCellValue(300);   
            //sheet11.GetRow(10).GetCell(1).SetCellValue(500050);   
            //sheet11.GetRow(11).GetCell(1).SetCellValue(8000);   
            //sheet11.GetRow(12).GetCell(1).SetCellValue(110);   
            //sheet11.GetRow(13).GetCell(1).SetCellValue(100);   
            //sheet11.GetRow(14).GetCell(1).SetCellValue(200);   
            //sheet11.GetRow(15).GetCell(1).SetCellValue(210);   
            //sheet11.GetRow(16).GetCell(1).SetCellValue(2300);   
            //sheet11.GetRow(17).GetCell(1).SetCellValue(240);   
            //sheet11.GetRow(18).GetCell(1).SetCellValue(180123);   
            //sheet11.GetRow(19).GetCell(1).SetCellValue(150);   

            //Force excel to recalculate all the formula while open   
            Response.ContentType = "application/vnd.ms-excel";   
            Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", "T3"));   
            Response.Clear();   

            DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();   
            dsi.Company = "NPOI Team";   
            hssfworkbook.DocumentSummaryInformation = dsi;   

            ////create a entry of SummaryInformation   
            SummaryInformation si = PropertySetFactory.CreateSummaryInformation();   
            si.Subject = "NPOI SDK Example";   
            hssfworkbook11.SummaryInformation = si;   

            MemoryStream file = new MemoryStream();   
            hssfworkbook11.Write(file);   
            Response.BinaryWrite(file.GetBuffer());   
            Response.End();   



            //sheet11.ForceFormulaRecalculation = true;    
            //FileStream file111 = new FileStream(Server.MapPath("T2.xls"), FileMode.Create);    
            //hssfworkbook11.Write(file111);   
            //file111.Close(); 
相關文章
相關標籤/搜索