<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
        

      C#組件系列——又一款Excel處理神器Spire.XLS,你值得擁有(二)

      前言:上篇 C#組件系列——又一款Excel處理神器Spire.XLS,你值得擁有 介紹了下組件的兩個(gè)功能,說不上特色,但確實(shí)能解決我們項(xiàng)目中的一些實(shí)際問題,這兩天繼續(xù)研究了下這個(gè)組件,覺得有些功能用起來還是挺方便的,這篇繼續(xù)來看看Spire.XLS的一些其他功能,說不定有你需要的呢~~

      本文原創(chuàng)地址:http://www.rzrgm.cn/landeanfen/p/5906077.html

      一、基礎(chǔ)入門

      1、新建Workbook

       Spire.XLS提供了多種方式創(chuàng)建Workbook對象

      1.1、新建空的Workbook

      //新建Workbook
      Workbook workbook = new Workbook();
      //得到第一個(gè)Sheet頁
      Worksheet sheet = workbook.Worksheets[0];
      
      //給A2這個(gè)單元格設(shè)置值
      sheet.Range["A2"].Text = "你好,Jim" ;
      
      //保存到物理路徑
      var strFullName = @"D:\Data\Upload\" + "Export" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
      workbook.SaveToFile(strFullName);

      就這么簡單生成一個(gè)Excel文件

      1.2、根據(jù)物理路徑生成Workbook

      //新建Workbook
      Workbook workbook = new Workbook();
      //將當(dāng)前路徑下的文件內(nèi)容讀取到workbook對象里面
      workbook.LoadFromFile(@"D:\Data\Upload\Export20160926114559.xlsx");
      
      //得到第一個(gè)Sheet頁
      Worksheet sheet = workbook.Worksheets[0];
      //給A2這個(gè)單元格設(shè)置值
      sheet.Range["C5"].Text = "你好,Jim" ;
      
      //保存到物理路徑
      var strFullName = @"D:\Data\Upload\" + "Export" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
      workbook.SaveToFile(strFullName,ExcelVersion.Version2010);

      1.3、根據(jù)文件流生成Workbook

      上篇我們演示過多次,對于Web里面的文件上傳,多用此方法。

      //得到當(dāng)前請求的文件
      var oFile = Request.Files["txt_file"];
      
      //根據(jù)當(dāng)前的文件流生成Workbook對象
      Workbook book = new Workbook();
      book.LoadFromStream(oFile.InputStream);

      1.4、根據(jù)Excel模板生成Workbook

      這種用法適用于項(xiàng)目需要使用Excel模板的時(shí)候,比如我們項(xiàng)目需要導(dǎo)出的每一個(gè)Excel都適用如下模板:

      那么,我們每次生成Excel的時(shí)候可以根據(jù)該模板去創(chuàng)建Workbook

      //新建Workbook
      Workbook workbook = new Workbook();
      //根據(jù)模板生成Workbook
      workbook.LoadTemplateFromFile(@"D:\Data\Upload\Template.xlsx");

      這樣得到的Excel文件將會(huì)自動(dòng)套用該模板樣式。

      2、讀寫Workbook

      2.1、根據(jù)單元格的名稱框來讀寫Excel

      關(guān)于Workbook的讀寫,上文已經(jīng)提供了一種方式,形如:

      sheet.Range["C5"].Text = "你好,Jim" ;

      這樣就能給C5單元格賦值,如果是取值,可以直接使用同樣的方式。當(dāng)然,除了Text字符串的內(nèi)容,組件還提供了NumberValue、DateTimeValue、BooleanValue等屬性,用于讀寫數(shù)字、時(shí)間、bool類型的值。

      當(dāng)然,Range除了支持基礎(chǔ)的單元格名稱框來讀寫值之外,它還提供了給某一個(gè)區(qū)域的文本框賦值的功能。比如

      sheet.Range["C5:E6"].Value = "你好,Jim" ;

      這一句表示給C5-E6這一區(qū)域的文本框統(tǒng)一賦值。得到結(jié)果如下:

      如果需要操作當(dāng)前區(qū)域的所有單元格,可以這樣:

      var columes = sheet.Range["C5:E6"].Columns ;
      foreach (var column in columes)
      { }

      2.2、根據(jù)單元格的行列索引來讀寫Excel

      除了上面的方式,組件還支持通過行列的索引去給單元格取賦值。

      sheet.Range[1, 1].Text = "部門名稱";

      以上一句表示給第一個(gè)行第一列單元格賦值。

      3、保存Workbook

      關(guān)于Excel的保存,組件同樣提供了多種方式。

      3.1、直接保存的方式:SaveToFile()

      var strFullName = @"D:\Data\Upload\" + "Export" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
      workbook.SaveToFile(strFullName);

      值得一提的是,SaveToFile還支持保存不同版本的Excel,來看這個(gè)重載

      public void SaveToFile(string fileName, ExcelVersion version);

      ExcelVersion是一個(gè)枚舉類型,定義了各種不同版本的Excel:

      public enum ExcelVersion
          {
              // 摘要: 
              //     Represents excel version 2007 xlsb
              Xlsb2007 = 0,
              //
              // 摘要: 
              //     Represents excel version 2010 xlsb
              Xlsb2010 = 1,
              //
              // 摘要: 
              //     OpenOffice Spreadsheet documents
              ODS = 2,
              //
              // 摘要: 
              //     Represents excel version 97-2003.
              Version97to2003 = 3,
              //
              // 摘要: 
              //     Represents excel version 2007
              Version2007 = 4,
              Version2010 = 5,
              //
              // 摘要: 
              //     Represents excel version 2013.
              Version2013 = 6,
          }

      3.2、保存并且轉(zhuǎn)換文件

      上篇介紹Excel轉(zhuǎn)PDF的時(shí)候,我們知道組件提供了SaveToPdf()方法直接將Excel保存成為pdf文件,用法如下:

      //保存到物理路徑
      var strFullName = @"D:\Data\Upload\" + "Export" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf";
      workbook.SaveToPdf(strFullName)

      除了保存成為pdf之外,還支持轉(zhuǎn)換成其他格式:

      保存為image

      var strFullName = @"D:\Data\Upload\" + "Export" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".png";
      var image = workbook.SaveAsImage(0, 100, 190);
      image.Save(strFullName);

      SaveAsImage()第一個(gè)參數(shù)表示需要生成圖片的Sheet頁的索引;第二、三個(gè)參數(shù)表示生成圖片的X和Y的值。

      保存為xml

      workbook.SaveAsXml(strFullName);

      保存到文件流

      using (var stream = new FileStream(strFullName, FileMode.Create))
      {
          workbook.SaveToStream(stream);
      } 

      二、樣式

      1、文本樣式

      設(shè)置單元格字體樣式

      sheet.Range["C5:E6"].Value = "aaabbbccc";
      sheet.Range["C5:E6"].Style.Font.Color = Color.FromArgb(255, 125, 125);//文本顏色
      sheet.Range["C5:E6"].Style.Font.IsBold = true;//字體是否加粗
      sheet.Range["C5:E6"].Style.Font.IsItalic = true;//是否斜體
      sheet.Range["C5:E6"].Style.Font.Underline = FontUnderlineType.Single;//下劃線
      sheet.Range["C5:E6"].Style.Font.IsSuperscript = true;//是否呈現(xiàn)為下標(biāo)
      sheet.Range["C5:E6"].Style.Font.FontName = "華文彩云";//字體名稱
      sheet.Range["C5:E6"].Style.Font.Size = 30;//字體大小

      得到結(jié)果

      2、單元格樣式

      關(guān)于單元格樣式設(shè)置

      sheet.Range["C5:E6"].Style.HorizontalAlignment = HorizontalAlignType.Center;//水平對齊
      sheet.Range["C5:E6"].Style.VerticalAlignment = VerticalAlignType.Center;//垂直對齊
      sheet.Range["C5:E6"].ColumnWidth = 100;//單元格的寬度
      sheet.Range["C5:E6"].RowHeight = 30;//行高
      sheet.Range["C5:E6"].Style.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thin;//邊框
      sheet.Range["C5:E6"].Style.Borders[BordersLineType.EdgeRight].LineStyle = LineStyleType.Thin;
      sheet.Range["C5:E6"].Style.Borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thin;
      sheet.Range["C5:E6"].Style.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin;

      3、表格樣式

      下面來一個(gè)奇偶行的樣式:

      public static void sheetStyle(Workbook book, Worksheet sheet)
              {
                  CellStyle oddStyle = book.Styles.Add("oddStyle");
                  oddStyle.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thin;
                  oddStyle.Borders[BordersLineType.EdgeRight].LineStyle = LineStyleType.Thin;
                  oddStyle.Borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thin;
                  oddStyle.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin;
                  oddStyle.KnownColor = ExcelColors.LightGreen1;
      
                  CellStyle evenStyle = book.Styles.Add("evenStyle");
                  evenStyle.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thin;
                  evenStyle.Borders[BordersLineType.EdgeRight].LineStyle = LineStyleType.Thin;
                  evenStyle.Borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thin;
                  evenStyle.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin;
                  evenStyle.KnownColor = ExcelColors.LightTurquoise;
      
      
                  foreach (CellRange range in sheet.AllocatedRange.Rows)
                  {
                      if (range.Row % 2 == 0)
                          range.CellStyleName = evenStyle.Name;
                      else
                          range.CellStyleName = oddStyle.Name;
                  }
      
                  //Sets header style
                  CellStyle styleHeader = sheet.Rows[0].Style;
                  styleHeader.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thin;
                  styleHeader.Borders[BordersLineType.EdgeRight].LineStyle = LineStyleType.Thin;
                  styleHeader.Borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thin;
                  styleHeader.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin;
                  styleHeader.VerticalAlignment = VerticalAlignType.Center;
                  styleHeader.KnownColor = ExcelColors.Green;
                  styleHeader.Font.KnownColor = ExcelColors.White;
                  styleHeader.Font.IsBold = true;
      
                  sheet.Columns[sheet.AllocatedRange.LastColumn - 1].Style.NumberFormat = "\"$\"#,##0";
                  sheet.Columns[sheet.AllocatedRange.LastColumn - 2].Style.NumberFormat = "\"$\"#,##0";
      
                  sheet.AllocatedRange.AutoFitColumns();
                  sheet.AllocatedRange.AutoFitRows();
      
                  sheet.Rows[0].RowHeight = 20;
              }
      SheetStyle()

      效果如下:

      4、富文本編輯框

      除了上面的一些簡單樣式外,組件還提供了富文本的編輯方式

      ExcelFont fontBold = book.CreateFont();
      fontBold.IsBold = true;
      
      ExcelFont fontUnderline = book.CreateFont();
      fontUnderline.Underline = FontUnderlineType.Single;
      
      ExcelFont fontColor = book.CreateFont();
      fontColor.KnownColor = ExcelColors.Green;
      
      RichText richText = sheet.Range["A1"].RichText;
      richText.Text = "Bold and underlined and colored text";
      richText.SetFont(0, 3, fontBold);
      richText.SetFont(9, 18, fontUnderline);
      richText.SetFont(24, 30, fontColor);

      效果

      當(dāng)然,這個(gè)功能可能在一些特定的場合才會(huì)用上。

      三、凍結(jié)行列

      組件提供了非常方便凍結(jié)行列的功能。

      1、凍結(jié)行

      sheet.FreezePanes(2, 1);

      得到結(jié)果

      2、凍結(jié)列

      sheet.FreezePanes(1, 2);

      得到結(jié)果

      代碼釋疑:這里的兩個(gè)參數(shù)怎么理解,第一個(gè)參數(shù)rowIndex,第二個(gè)參數(shù)columnIndex。為什么sheet.FreezePanes(2, 1)能凍結(jié)首行?這里博主的理解是這里的參數(shù)設(shè)置的是開始滑動(dòng)的行和列。也就是說FreezePanes(2,1)表示從第二行、第一列開始可以滑動(dòng),而FreezePanes(1,2)表示從第一行、第二列開始可以滑動(dòng)。這樣是不是會(huì)好理解一點(diǎn)。

      四、合并單元格

      關(guān)于單元格的合并,組件使用也還算方便。

      var mergecolumn = sheet.Merge(sheet.Range[1, 2], sheet.Range[1, 3]);
      mergecolumn.VerticalAlignment = VerticalAlignType.Center;
      mergecolumn.HorizontalAlignment = HorizontalAlignType.Center;
      mergecolumn.Text = "第一個(gè)合并的單元格" ;

      得到結(jié)果

      五、選項(xiàng)過濾功能

      組件提供了方便的組件過濾功能

      sheet.AutoFilters.Range = sheet.Range["A1:C1"];

      以上表示對A1到C1這個(gè)區(qū)域的所有文本框進(jìn)行過濾。效果如下:

      六、下拉框

      在Excel里面,經(jīng)常需要用到的一個(gè)功能就是在編輯單元格的時(shí)候使用下拉框,這樣方便了一些特定項(xiàng)的編輯。同樣,組件也為我們提供了這個(gè)功能

      //下拉框
      CellRange range = sheet.Range["A2:A6"];
      //給E1到E10所有的單元格添加下拉選項(xiàng),數(shù)據(jù)來源是A2到A6的值
      sheet.Range["E1:E10"].DataValidation.DataRange = range;

      效果如下:

      七、顯示、隱藏行列

      對于行列隱藏也算是一個(gè)常用功能,方法如下

      //顯示、隱藏行列
      sheet.HideColumn(10);
      sheet.HideRow(8);
      //sheet.ShowColumn(10);
      //sheet.ShowRow(7);

      效果

      八、搜索結(jié)果高亮

      foreach (CellRange range in sheet.FindAllString("行政部", true, true))
      {
             range.Style.Color = Color.LawnGreen;
      }

      效果如下

      九、總結(jié)

      至此,組件的一些基礎(chǔ)功能介紹完畢。當(dāng)然,這并不是全部,只是博主選的一些覺得或許有用的功能,更多功能可以參考官網(wǎng)文檔。

      當(dāng)然,如果本文能夠幫到你,還是希望園友們幫忙推薦,博主下次繼續(xù)努力!

      本文原創(chuàng)出處:http://www.rzrgm.cn/landeanfen/

      歡迎各位轉(zhuǎn)載,但是未經(jīng)作者本人同意,轉(zhuǎn)載文章之后必須在文章頁面明顯位置給出作者和原文連接,否則保留追究法律責(zé)任的權(quán)利

      posted @ 2016-09-27 15:08  懶得安分  閱讀(19762)  評論(37)    收藏  舉報(bào)
      主站蜘蛛池模板: 中文字幕久久人妻熟人妻| 亚洲中文字幕一区二区| av激情亚洲男人的天堂| 干老熟女干老穴干老女人| 一区二区三区鲁丝不卡| 天堂av网一区二区三区| 午夜成人性爽爽免费视频| 久久久久国产精品熟女影院| 在线播放国产精品三级网| 国产成人一区二区不卡| 亚洲高清WWW色好看美女| 九九热爱视频精品视频| 2022亚洲男人天堂| 四虎影视库国产精品一区| 欧美日产国产精品| 日韩精品一区二区亚洲av| 久久精品一本到99热免费| 亚洲综合精品第一页| 中年国产丰满熟女乱子正在播放 | 一本av高清一区二区三区| 大陆精大陆国产国语精品| 99久久久无码国产麻豆| 亚洲国产色播AV在线| 国产欧美日韩高清在线不卡| 大伊香蕉精品一区视频在线| 国产视频一区二区三区麻豆| 亚洲av永久无码精品水牛影视| 精品国产迷系列在线观看| 成年女人黄小视频| 久久综合亚洲鲁鲁九月天| 天干天干夜啦天干天干国产| 久久久久国产精品熟女影院| 人妻少妇偷人一区二区| 日韩人妻少妇一区二区三区| 亚洲天堂久久一区av| 99久热在线精品视频| 18成禁人视频免费| 日韩人妻精品中文字幕专区| 国产不卡一区二区四区| 任你躁国产自任一区二区三区| 久久日产一线二线三线|