web-dev-qa-db-ja.com

NPOIは、太字と非太字のテキストを含むセルを作成します

NPOIを使用してAsp.Net MVCアプリからExcelを出力し、プレーンテキストで非常にうまく機能しますが、書式を追加するように要求され、太字のテキストとその後に太字でないテキストを含む単一のセルが必要な問題が発生しています。例えば.

このテキストは太字-通常のテキスト

セルに単一のスタイルを指定できることはわかっていますが、これでは効果がなく、セルに事前にフォーマットされたリッチテキストを指定することができません。

私が考えることができる唯一の可能な解決策は、2つのセルを別々に作成してそれらをマージすることですが、それはフォーマットが失われることを意味しますか?

NPOIで見逃した方法はありますか?

22
Nathan

かなりの量の調査の結果、私がやろうとしていたようなセル内の特定のテキストに書式を設定するために必要な機能を提供していないため、NPOI内ではこれを行うことができないようです。

0
Nathan

あなたはこれを試すことができます:

        var font = reportWorkbook.CreateFont();
        font.FontHeightInPoints = 11;
        font.FontName = "Calibri";
        font.Boldweight = (short)NPOI.SS.UserModel.FontBoldWeight.BOLD; 

        var cell = headerRow.CreateCell(0);
        cell.SetCellValue("Test Bold");
        cell.CellStyle = reportWorkbook.CreateCellStyle();
        cell.CellStyle.SetFont(font);
23
Ernie Banzon

幸い、あなたはそれを行うことができます...このコードを見てください:

Font f1=wb.CreateFont();
f1.Color=HSSFColor.RED.index;
ws.GetRow(1).GetCell(0).RichStringCellValue.ApplyFont(1, 5, f1);
22
Tarek El-Assady

おそらく名前空間の変更が原因で(または実際にHSSF名前空間を使用しているため)、Ernie Banzonの回答が説明どおりに機能しないようです。

// usings
using NPOI.HSSF.UserModel;

// IWorkbook doc
IFont font = doc.CreateFont();
font.FontHeightInPoints = 11;
font.FontName = "Arial";
font.Boldweight = (short)FontBoldWeight.BOLD;
6
oPless

このオプションを使用

 font.Boldweight = (short)700;//FontBoldWeight.Bold;

実際の構文は次のようになります。しかし、これらの構文はどちらも機能しないことがあります

font.Boldweight = FontBoldWeight.Bold ;  
Or 
font.Boldweight = (short)FontBoldWeight.Bold; 

FontBoldWeightはタイプenumであり、タイプキャスト後は機能しない場合があります。カーストを入力するか、enumの実際のshort値を直接使用する場合の回避策として、これは機能します。以下はFontBoldWeightの宣言です。それは物事を明確にします。

**public enum FontBoldWeight
    {
              None = 0,
              Normal = 400,
              Bold = 700,
    }**
2