none
NPIO excel 儲存格顏色以及字體粗體 RRS feed

  • 問題

  • 下面是我寫的一小段code,但是似乎對儲存格沒做用
    請問是哪裡出錯了嗎,謝謝

    ...
    HSSFWorkbook workbook = new HSSFWorkbook();
    HSSFSheet sheet1 = workbook.CreateSheet("TEST");

    HSSFCellStyle style1 = workbook.CreateCellStyle();
    style1.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.BLUE.index;
    style1.FillPattern = CellFillPattern.BIG_SPOTS;
    style1.FillBackgroundColor = NPOI.HSSF.Util.HSSFColor.PINK.index;
    sheet1.CreateRow(0).CreateCell(1).CellStyle = style1;
    sheet1.CreateRow(j).CreateCell(1).SetCellValue("Color");
    ...

    2011年8月9日 上午 07:34

解答

  • Hi:

    以下粗體字是個人認為該注意的地方

       string[] title = { "Code", "RO Data", "RW Data", "ZI Data" };
       HSSFWorkbook workbook = new HSSFWorkbook();
       HSSFSheet sheet1 = (HSSFSheet)workbook.CreateSheet("TEST");
    
    
    
       HSSFRow row = (HSSFRow)sheet1.CreateRow(1);
       HSSFCell cell;
    
    
    
       for (int i = 0; i < title.Length; i++)
       {
    
        cell = (HSSFCell)row.CreateCell(i + 2);
        cell.SetCellValue(title[i]);
    
       }
    
    
    
       FileStream file = new FileStream(@"D:\test.xls", FileMode.Create);
       workbook.Write(file);
       file.Close();
    
    

     ====================

    然後關於改變儲存格顏色和粗體字部份,個人修正一下

    應該是我沒using相對應的namespace,才會誤認各版本叫用方法不同。


    Shadowと愉快なコード達

    • 已標示為解答 Lucas927 2011年8月12日 上午 03:34
    2011年8月9日 下午 12:15

所有回覆

  • 我之前是這樣用,你試試行不行

    style1.FillPattern = FillPatternType.SOLID_FOREGROUND;
    
    2011年8月9日 上午 08:41
  • Dear 阿尼,

    我沒辦法用FillPatternType這個呢?

    下面是我using的部份

    using NPOI.HSSF.UserModel;

    using NPOI.HPSF;
    using NPOI.HSSF.Util;

    using NPOI.POIFS.FileSystem;

    2011年8月9日 上午 08:48
  •   //以下使用NPOI 1.2.3 版
      //下載:http://npoi.codeplex.com/releases/view/49524
    
      private void button1_Click(object sender, EventArgs e)
      {
    
       HSSFWorkbook workbook = new HSSFWorkbook();
       HSSFSheet sheet1 = (HSSFSheet)workbook.CreateSheet("TEST");
    
       HSSFCellStyle style1 = (HSSFCellStyle)workbook.CreateCellStyle();
    
       
       //以下兩行為設定背景色
        style1.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.LIGHT_YELLOW.index;
       //style1.FillBackgroundColor = NPOI.HSSF.Util.HSSFColor.LIGHT_YELLOW.index;//不知為啥不是用FillBackgroundColor...
       style1.FillPattern = NPOI.SS.UserModel.FillPatternType.SOLID_FOREGROUND;
    
    
    
       HSSFRow row = (HSSFRow)sheet1.CreateRow(0);
       HSSFCell cell = (HSSFCell)row.CreateCell(0);
    
       NPOI.SS.UserModel.Font font = workbook.CreateFont();
       //以下為設定粗體字
        font.Boldweight = (short)NPOI.SS.UserModel.FontBoldWeight.BOLD;
       style1.SetFont(font);
    
       cell.CellStyle = style1;
       cell.SetCellValue("Color");
    
    
       FileStream fs = new FileStream(@"E:\test.xls", FileMode.Create);
       workbook.Write(fs);
       fs.Close();
    
      }
    
    執行結果:
    剛剛上網查一下,似乎每一版本的叫用方法都不同的樣子...

    2011年8月9日 上午 08:50
  • NPOI 範例

    http://npoi.codeplex.com/releases/view/49524

    下載 [example package] 找 SetBorderStyleInXls 跑跑看

    using System;
    using System.Text;
    using System.IO;
    using NPOI.HSSF.UserModel;
    using NPOI.HSSF.Util;
    using NPOI.HPSF;
    using NPOI.POIFS.FileSystem;
    using NPOI.SS.UserModel;
    
    /*
     This sample is copied from poi.hssf.usermodel.examples. Original name is Borders.java
     */
    namespace SetBorderStyleInXls
    {
      class Program
      {
        static void Main(string[] args)
        {
          InitializeWorkbook();
    
          Sheet sheet = hssfworkbook.CreateSheet("new sheet");
    
          // Create a row and put some cells in it. Rows are 0 based.
          Row row = sheet.CreateRow(1);
    
          // Create a cell and put a value in it.
          Cell cell = row.CreateCell(1);
          cell.SetCellValue(4);
    
          // Style the cell with borders all around.
          CellStyle style = hssfworkbook.CreateCellStyle();
          style.BorderBottom= CellBorderType.THIN;
          style.BottomBorderColor= HSSFColor.BLACK.index;
          style.BorderLeft = CellBorderType.DASH_DOT_DOT;
          style.LeftBorderColor= HSSFColor.GREEN.index;
          style.BorderRight = CellBorderType.HAIR;
          style.RightBorderColor= HSSFColor.BLUE.index;
          style.BorderTop = CellBorderType.MEDIUM_DASHED;
          style.TopBorderColor= HSSFColor.ORANGE.index;
          cell.CellStyle= style;
    
          WriteToFile();
        }
    
    
        static HSSFWorkbook hssfworkbook;
    
        static void WriteToFile()
        {
          //Write the stream data of workbook to the root directory
          FileStream file = new FileStream(@"test.xls", FileMode.Create);
          hssfworkbook.Write(file);
          file.Close();
        }
    
        static void InitializeWorkbook()
        {
          hssfworkbook = new HSSFWorkbook();
    
          //Create a entry of DocumentSummaryInformation
          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";
          hssfworkbook.SummaryInformation = si;
        }
      }
    }
    

     


    歡迎參觀我的Blog.NET菜鳥自救會


    2011年8月9日 上午 08:55
    版主
  • 請教一下

    string[] title = { "Code", "RO Data", "RW Data", "ZI Data" };

    HSSFWorkbook workbook = new HSSFWorkbook();
    HSSFSheet sheet1 = (HSSFSheet)workbook.CreateSheet("TEST");

    HSSFRow row;
    HSSFCell cell;

     for (i = 0; i < title.Length; i++)
     {
          row = (HSSFRow)sheet1.CreateRow(1);
          cell = (HSSFCell)row.CreateCell(i+2);
          cell.SetCellValue(title[i]);

     }

    FileStream file = new FileStream(@path, FileMode.Create);
    workbook.Write(file);
    file.Close();
    file.Dispose();

    位什麼在excel表並不會倍寫入呢,好怪

    我測試直接塞value就可以,ex:

    row = (HSSFRow)sheet1.CreateRow(0);
    cell = (HSSFCell)row.CreateCell(1);
    cell.SetCellValue("total");

    2011年8月9日 上午 11:27
  • Hi:

    以下粗體字是個人認為該注意的地方

       string[] title = { "Code", "RO Data", "RW Data", "ZI Data" };
       HSSFWorkbook workbook = new HSSFWorkbook();
       HSSFSheet sheet1 = (HSSFSheet)workbook.CreateSheet("TEST");
    
    
    
       HSSFRow row = (HSSFRow)sheet1.CreateRow(1);
       HSSFCell cell;
    
    
    
       for (int i = 0; i < title.Length; i++)
       {
    
        cell = (HSSFCell)row.CreateCell(i + 2);
        cell.SetCellValue(title[i]);
    
       }
    
    
    
       FileStream file = new FileStream(@"D:\test.xls", FileMode.Create);
       workbook.Write(file);
       file.Close();
    
    

     ====================

    然後關於改變儲存格顏色和粗體字部份,個人修正一下

    應該是我沒using相對應的namespace,才會誤認各版本叫用方法不同。


    Shadowと愉快なコード達

    • 已標示為解答 Lucas927 2011年8月12日 上午 03:34
    2011年8月9日 下午 12:15