質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio 2010

Microsoft Visual Studio 2010はMicrosoftが提供している統合開発環境(IDE)です。

Q&A

解決済

1回答

910閲覧

[NPOI]指定したセルに取消線を設定したいが、指定していないセルにも取消線が設定されてしまう

hinapapa

総合スコア1

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio 2010

Microsoft Visual Studio 2010はMicrosoftが提供している統合開発環境(IDE)です。

0グッド

0クリップ

投稿2023/02/02 08:55

実現したいこと

指定したセルに取消線を設定したい

前提

お世話になります。
VisualBasic2010でNPOI2.4.1を使用して、Excel出力を行っております。
指定したセルに、取消線を設定したいのですが、下記ソースコードで実行すると、指定していないセルにも取消線が引かれてしまいます。
どこが誤っているのか、設定の仕方等、ご教示いただければ幸いです。
よろしくお願いいたします。

発生している問題・エラーメッセー

エラーメッセージ

該当のソースコード

Dim row As IRow = CellUtil.GetRow(10, xlSheet)
Dim cell As ICell = CellUtil.GetCell(row, 2)
'フォントの作成
Dim font As IFont = exlBook.CreateFont()
'セルのStyleを取得する
Dim fontOrg As IFont = cell.CellStyle.GetFont(exlBook)
'今のフォントの内容をセット
font.Boldweight = fontOrg.Boldweight
font.Charset = fontOrg.Charset
font.Color = fontOrg.Color
font.FontHeightInPoints = fontOrg.FontHeightInPoints
font.FontName = fontOrg.FontName
'取り消し線設定
font.IsStrikeout = True
'セルにフォントをセット
cell.CellStyle.SetFont(font)

VisualBasic2010 NPOI 2.4.1

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

原因は、Excel内部のデータ構造の誤解でしょう。

コードを見る限り、セル毎にスタイルを別に持っているのを前提にされているようです。
ですが、スタイルの管理はブック全体で少数(各パターンで1つ)のオブジェクトを保持しているだけ。
その為、複数のセルで、同一のスタイルオブジェクトが設定されており、スタイルを変更すると、他のセルにも影響が出ます。

特定のセルのスタイルを変更したい場合は、新たなスタイルをブックに追加して、セルのスタイルを新たなスタイルに設定し直してください。

C#ですが、以下のページのコードの40行以降が参考になるかと。
Cellの書式を設定する(NPOI編)

投稿2023/02/02 09:10

編集2023/02/02 09:12
YT0014

総合スコア1708

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hinapapa

2023/02/02 14:40

下記コードで解決いたしました(VBですが)。ありがとうございました。 Dim row As IRow = CellUtil.GetRow(0, exlSheet) Dim cell As ICell = CellUtil.GetCell(row, 0) Dim newFont As IFont = exlBook.CreateFont() Dim newStyle As ICellStyle = exlBook.CreateCellStyle() '取り消し線設定 newFont.IsStrikeout = True 'スタイルにフォントをセット newStyle.SetFont(newFont) 'セルにスタイルをセット cell.CellStyle = newStyle
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問