none
NPOI如何在開啟Excel檔時不顯示註解 RRS feed

  • 問題

  • 我參照網路上的文章,寫出下列的程式,但是,我發現,在打開Excel檔案時,全部的註解都會先顯示內容出來,
    有什麼設定方式,是使用者移去註解的小紅點,再讓它自己顯示出來呢?!謝謝!!
    以下是Try Run的程式碼:
    using (IWorkbook hssfworkbook = new HSSFWorkbook())
                {
                    ISheet sheet = hssfworkbook.CreateSheet("new sheet");
                    IDrawing patr = (HSSFPatriarch)sheet.CreateDrawingPatriarch();
                    IRow row = null;
                    ICell cell = null;
                    IComment comment = null;
                    CreationHelper factory = hssfworkbook.GetCreationHelper();
                    IClientAnchor anchor = null;
     
                    for (int i = 0; i < sprdDataInfo.MaxRows; i++)
                    {
                        row = hssfworkbook.GetSheetAt(0).CreateRow(i);
     
                        for (int j = 0; j < sprdDataInfo.MaxCols; j++)
                        {
                            sprdDataInfo.Row = i + 1;
                            sprdDataInfo.Col = j + 1;
     
                            if (sprdDataInfo.Text != "")
                            {
                                cell = row.CreateCell(j);
                                cell.SetCellValue(new HSSFRichTextString(sprdDataInfo.Text));
     
                                    anchor = factory.CreateClientAnchor();
     
                                    anchor.Col1 = cell.ColumnIndex;
                                    anchor.Col2 = cell.ColumnIndex + 1;
                                    anchor.Row1 = row.RowNum;
                                    anchor.Row2 = row.RowNum + 3;
     
                                    comment = patr.CreateCellComment(anchor);
                                    comment.String = new HSSFRichTextString(sprdDataInfo.Text);
                                    comment.Author = ("Apache Software Foundation");
                                    cell.CellComment = (comment);
                            }
                        }
                    }
     
                    using (FileStream fs = new FileStream(@"test.xls"FileMode.Create))
                    {
                        hssfworkbook.Write(fs);
                    }
    }

    • 已編輯 vash0419 2012年1月13日 上午 10:03
    2012年1月13日 上午 10:03

解答

  • 應該是NPOI版本關係

    我的環境VS2010+NPOI1.2.3+Excel2007 不管是用

                Cell1.CellComment = comment1;//這樣指派註解

    或以下行列方式指定註解
                comment1.Row = 0;
                comment1.Column = 3;

    都可以實現你要的效果

    但相同的環境一換到NPOI 1.2.4就不行了


    • 已標示為解答 vash0419 2012年1月17日 下午 12:27
    2012年1月16日 下午 12:47
  • 我的NPOI是從以下的地方DOWNLAOD來的

    http://npoi.codeplex.com/releases/56605/download/298600

    如果,1.2.4版還不是很穩定的話,建議您先使用1.2.3版吧。

     


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    • 已標示為解答 vash0419 2012年1月17日 下午 12:27
    2012年1月17日 上午 05:10

所有回覆

  • 請參考:NPOI 1.2.3教程 -10批注Comment

    comment = patr.CreateCellComment(anchor);
    =>
    comment =  (HSSFComment)patr.CreateCellComment(new HSSFClientAnchor(0, 0, 0, 0, 4, 8, 6, 11));


    這是你要的效果嗎?


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    • 已編輯 亂馬客 2012年1月13日 下午 01:30
    2012年1月13日 下午 01:22
  • To亂馬客:

    我手動建立一個excel檔案說明一下,我想要的是效果,是像B3的效果不秀出註解出來,而非B4,是否有方式可以設定?謝謝

    2012年1月13日 下午 02:13
  • 請修改存檔的地方,

     

    using (FileStream fs = new FileStream(@"test.xls", FileMode.Create))
    {
    	hssfworkbook.Write(fs);
    }
    //=>
    using (FileStream fs = new FileStream(@"test.xls", FileMode.Create))
    {
    	hssfworkbook.Write(fs);
    fs.Close();  }
    最後寫檔後,要加個Close();

     


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    • 已編輯 亂馬客 2012年1月13日 下午 04:23
    2012年1月13日 下午 03:50
  • Dear 亂馬客:

    還是一樣的結果耶!是我哪些有移漏嗎?!謝謝

    2012年1月13日 下午 06:40
  • 我的NPOI版本是1.2.4.0。.NET 4.0,Office 2010。

    程式是Copy你的程式來改的,如下,您比較一下吧!

    using (IWorkbook hssfworkbook2 = new HSSFWorkbook())
    {
    	ISheet sheet = hssfworkbook2.CreateSheet("new sheet");
    	IDrawing patr = (HSSFPatriarch)sheet.CreateDrawingPatriarch();
    	IRow row = null;
    	ICell cell = null;
    	IComment comment = null;
    	CreationHelper factory = hssfworkbook2.GetCreationHelper();
    	IClientAnchor anchor = null;
    
    	for (int i = 0; i < 2; i++)
    	{
    		row = hssfworkbook2.GetSheetAt(0).CreateRow(i);
    
    		for (int j = 0; j < 2; j++)
    		{
    			 
    
    			if ("x" != "")
    			{
    				cell = row.CreateCell(j);
    				cell.SetCellValue(new HSSFRichTextString("sprdDataInfo.Text value"));
    
    				anchor = factory.CreateClientAnchor();
    
    				anchor.Col1 = cell.ColumnIndex;
    				anchor.Col2 = cell.ColumnIndex + 1;
    				anchor.Row1 = row.RowNum;
    				anchor.Row2 = row.RowNum + 3;
    
    				comment = patr.CreateCellComment(anchor);
    				comment.String = new HSSFRichTextString("sprdDataInfo.Text comment!");
    				comment.Author = ("Apache Software Foundation");
    				cell.CellComment = (comment);
    			}
    		}
    	}
    
    	using (FileStream fs = new FileStream(@"f:\testx.xls", FileMode.Create))
    	{
    		hssfworkbook2.Write(fs);
    		fs.Close();
    	}
    
    }
    



    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    2012年1月14日 上午 03:27
  • 您好,我原本的環境是Windows 7 64bit + .Net 3.5 + NPOI 1.2.4 + Office 2010,

    調成用.Net 4.0,但是結果還是一樣耶!!還是Excel的設定造成這個差異性呢??!

    2012年1月14日 上午 08:19
  • 請您先試一下NPOI 1.2.3教程 -10批注Comment,看看他的範例是否是OK的呢! Thanks!

     


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    2012年1月15日 上午 07:32
  • 我剛才實作一下這個範例,是OK的!難道是版本的問題嗎?!可是,您不是也在1.2.4版中實作出來了嗎?!

    還是,我這裡的環境只能用1.2.3去做呢?!有點不太明瞭?!

    2012年1月16日 上午 11:51
  • 應該是NPOI版本關係

    我的環境VS2010+NPOI1.2.3+Excel2007 不管是用

                Cell1.CellComment = comment1;//這樣指派註解

    或以下行列方式指定註解
                comment1.Row = 0;
                comment1.Column = 3;

    都可以實現你要的效果

    但相同的環境一換到NPOI 1.2.4就不行了


    • 已標示為解答 vash0419 2012年1月17日 下午 12:27
    2012年1月16日 下午 12:47
  • 我的NPOI是從以下的地方DOWNLAOD來的

    http://npoi.codeplex.com/releases/56605/download/298600

    如果,1.2.4版還不是很穩定的話,建議您先使用1.2.3版吧。

     


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    • 已標示為解答 vash0419 2012年1月17日 下午 12:27
    2012年1月17日 上午 05:10
  • 謝謝各位的幫忙,看來可能是版本的問題,暫時先用1.2.3版,我在 http://npoi.codeplex.com/releases/view/56605#ReviewsAnchor

    也有看到有人提出相同的問題,感謝各位的幫忙與協助,謝謝!!


    • 已編輯 vash0419 2012年1月17日 下午 12:28
    2012年1月17日 下午 12:26