MESCIUS SPREAD for Windows Forms 17.0J > 開発者ガイド > セル > セルへの画像の追加 |
SPREAD for Windows Forms では、セルに画像を値として挿入することができます。 これにより、セルを ImageCellType クラス オブジェクトに変換せずに、セルに画像を追加できます。
ImageCellType を使用して画像を追加する方法については、「イメージ型セル」トピックを参照してください。 |
次のいずれかの方法を使用して、セルに画像を表示できます。 これらの方法を使用すると、画像オブジェクトをセル値に設定したり、ローカル画像ファイルのパスを設定したり、base64 でエンコードされた画像文字列をセルに設定したりすることができます。
次の図は、画像ファイルのパスを指定してセル内に挿入された画像を示しています。
C# |
コードのコピー
|
---|---|
IWorksheet TestActiveSheet = fpSpread1.AsWorkbook().ActiveSheet; fpSpread1.AsWorkbook().WorkbookSet.CalculationEngine.CalcFeatures = CalcFeatures.All; fpSpread1.LegacyBehaviors = FarPoint.Win.Spread.LegacyBehaviors.None; // valueを使用してセル画像を表示します // イメージ型 TestActiveSheet.Cells["A1"].Value = Image.FromFile(@"D:\apple.jpg"); // バイト型 // TestActiveSheet.Cells["A3"].Value = File.ReadAllBytes("D:\\apple.jpg"); // ストリーム型 // TestActiveSheet.Cells["A5"].Value = new FileStream("D:\\apple.jpg", FileMode.Open); |
Visual Basic |
コードのコピー
|
---|---|
Dim TestActiveSheet As IWorksheet = FpSpread1.AsWorkbook().ActiveSheet FpSpread1.AsWorkbook().WorkbookSet.CalculationEngine.CalcFeatures = CalcFeatures.All FpSpread1.LegacyBehaviors = FarPoint.Win.Spread.LegacyBehaviors.None 'valueを使用してセル画像を表示します 'イメージ型 TestActiveSheet.Cells("A1").Value = Image.FromFile("D:\apple.jpg") 'バイト型 'TestActiveSheet.Cells("A3").Value = File.ReadAllBytes("D:\\apple.jpg") 'ストリーム型 'TestActiveSheet.Cells("A5").Value = New FileStream("D:\apple.jpg", FileMode.Open) |
次の図は、属性を使用してセルに画像を表示し、追加情報を表示する方法を示しています。
Show Code
C# |
コードのコピー
|
---|---|
private void CellImageAsAttribute_Load(object sender, EventArgs e) { IWorksheet TestActiveSheet = fpSpread1.AsWorkbook().ActiveSheet; fpSpread1.AsWorkbook().WorkbookSet.CalculationEngine.CalcFeatures = CalcFeatures.All; fpSpread1.LegacyBehaviors = FarPoint.Win.Spread.LegacyBehaviors.None; // Displaying cell image using attribute GrapeCity.CalcEngine.RichValue<Country> ct = new GrapeCity.CalcEngine.RichValue<Country>(new Country() { Name = "India", Capital = "New Delhi", }); ct.ShowDetailsIcon = true; TestActiveSheet.Cells["A1"].Value = ct; TestActiveSheet.Columns[0].ColumnWidth = 100; TestActiveSheet.Columns[2].ColumnWidth = 100; } [System.Reflection.DefaultMember("Data")] [CellImage("Name")] public class Country { public string Name { get; set; } [DisplayName("Capital Name")] public string Capital { get; set; } public string ContentType => "image/png"; [GrapeCity.CalcEngine.CellValueDataType(GrapeCity.CalcEngine.PrimitiveValueType.Image)] public Image Data { get { return Image.FromFile(@"D:\apple.jpg"); } } } |
Visual Basic |
コードのコピー
|
---|---|
Private Sub CellImageAsAttribute_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim TestActiveSheet As IWorksheet = FpSpread1.AsWorkbook().ActiveSheet FpSpread1.AsWorkbook().WorkbookSet.CalculationEngine.CalcFeatures = CalcFeatures.All FpSpread1.LegacyBehaviors = FarPoint.Win.Spread.LegacyBehaviors.None 'Displaying cell image using attribute Dim ct As GrapeCity.CalcEngine.RichValue(Of Country) = New GrapeCity.CalcEngine.RichValue(Of Country)(New Country() With { .Name = "India", .Capital = "New Delhi" }) ct.ShowDetailsIcon = True TestActiveSheet.Cells("A1").Value = ct TestActiveSheet.Columns(0).ColumnWidth = 100 TestActiveSheet.Columns(2).ColumnWidth = 100 End Sub <System.Reflection.DefaultMember("Data")> <CellImage("Name")> Public Class Country Public Property Name As String <DisplayName("Capital Name")> Public Property Capital As String Public ReadOnly Property ContentType As String Get Return "image/png" End Get End Property <GrapeCity.CalcEngine.CellValueDataType(GrapeCity.CalcEngine.PrimitiveValueType.Image)> Public ReadOnly Property Data As Image Get Return Image.FromFile("D:\apple.jpg") End Get End Property End Class |
メモ: 文字列によって返されるデータ型は、ローカルの画像ファイル パスのみをサポートします。 |
セル値とともに画像を表示したい場合は、CellImageAttribute クラスのメンバーを使用します。そのコンストラクターメソッドは次のパラメータを受け取ります。
パラメータ | 説明 |
---|---|
member |
セルのインライン画像データで指定されたメンバを示す文字列値。 |
isField |
メンバがフィールドであるかどうかを示すブール値。 デフォルト値は false です。 |
次の図は、Spread で設定された画像属性に従ってセル値とともに表示された画像を示しています。
C# |
コードのコピー
|
---|---|
private void CellImageAndValue_Load(object sender, EventArgs e) { IWorksheet TestActiveSheet = fpSpread1.AsWorkbook().ActiveSheet; fpSpread1.AsWorkbook().WorkbookSet.CalculationEngine.CalcFeatures = CalcFeatures.All; fpSpread1.LegacyBehaviors = FarPoint.Win.Spread.LegacyBehaviors.None; // 画像とセル値を表示します RichValue<Country> ct = new RichValue<Country>(new Country() { Name = "Apple", }); ct.ShowDetailsIcon = true; TestActiveSheet.Cells["A1"].Value = ct; TestActiveSheet.Rows[0].RowHeight = 100; TestActiveSheet.Columns[0].ColumnWidth = 150; TestActiveSheet.Columns[2].ColumnWidth = 100; } [System.Reflection.DefaultMember("Name")] [CellImage("Image")] public class Country { public string Name { get; set; } [CellValueDataType(PrimitiveValueType.Image)] public string Image { get { return @"D:\apple.jpg"; } } } |
Visual Basic |
コードのコピー
|
---|---|
Private Sub CellImageAndValue_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim TestActiveSheet As IWorksheet = FpSpread1.AsWorkbook().ActiveSheet FpSpread1.AsWorkbook().WorkbookSet.CalculationEngine.CalcFeatures = CalcFeatures.All FpSpread1.LegacyBehaviors = FarPoint.Win.Spread.LegacyBehaviors.None '画像とセル値を表示します Dim ct As RichValue(Of Country) = New RichValue(Of Country)(New Country() With { .Name = "Apple" }) ct.ShowDetailsIcon = True TestActiveSheet.Cells("A1").Value = ct TestActiveSheet.Rows(0).RowHeight = 100 TestActiveSheet.Columns(0).ColumnWidth = 150 TestActiveSheet.Columns(2).ColumnWidth = 100 End Sub <System.Reflection.DefaultMember("Name")> <CellImage("Image")> Public Class Country Public Property Name As String <CellValueDataType(PrimitiveValueType.Image)> Public ReadOnly Property Image As String Get Return "D:\apple.jpg" End Get End Property End Class |
メモ:このクラスは CellValueDataTypeAttribute クラスよりも高い優先順位を持っています。 |
SPREAD for Windows Forms では、セルに画像を配置できる GC.IMAGE 関数も提供します。 この関数の詳細については、「イメージスパークライン」トピックを参照してください。 また、ソースの場所からセルに画像を挿入する IMAGE関数を使用することもできます。
SPREAD for Windows Forms では、セルに画像を挿入または貼り付けるには、IRange インターフェースの InsertPictureInCell メソッドまたは PastePictureInCell メソッドを使用します。新しいスタイルシステム(LegacyBehaviorsプロパティがStyleを含まない場合)標準のセルでのみ機能します。セルに画像を挿入するために、リボンコントロールを使用するか、コンテキストメニューを使用して画像を貼り付けます。
コードの使用
次のサンプル コードは、IRange インターフェースの InsertPictureInCell メソッドを使用して画像を挿入します。
C# |
コードのコピー
|
---|---|
fpSpread1.AsWorkbook().ActiveSheet.Cells[7, 2].InsertPictureInCell(@”picture.jpg”); |
Visual Basic |
コードのコピー
|
---|---|
FpSpread1.AsWorkbook().ActiveSheet.Cells(7, 2).InsertPictureInCell("picture.jpg")
|
実行時に画像を挿入
リボンコントロールを使用して画像を挿入するには、次の手順に従います。
C# |
コードのコピー
|
---|---|
ribbonBar1.Attach(fpSpread1); |
Visual Basic |
コードのコピー
|
---|---|
ribbonBar1.Attach(FpSpread1) |
メモ:セルの上に画像をフローティングするには、「セルの上に配置」オプションを使用します。 |
次の図は、リボンコントロールを使用してセルに画像を挿入する方法を示しています。
コードの使用
次のサンプルコードは、IRange インターフェースの PastePictureInCell メソッドを使用して画像を貼り付けます。
C# |
コードのコピー
|
---|---|
fpSpread1.Features.RichClipboard = true;
fpSpread1.AsWorkbook().ActiveSheet.ActiveCell.PastePictureInCell();
|
Visual Basic |
コードのコピー
|
---|---|
FpSpread1.Features.RichClipboard = True
FpSpread1.AsWorkbook().ActiveSheet.ActiveCell.PastePictureInCell()
|
実行時に画像をセルに貼り付ける
リボンコントロールを使用して画像を貼り付けるには、次の手順に従います。
C# |
コードのコピー
|
---|---|
fpSpread1.Features.RichClipboard = true;
ribbonBar1.Attach(fpSpread1);
|
Visual Basic |
コードのコピー
|
---|---|
FpSpread1.Features.RichClipboard = True
ribbonBar1.Attach(FpSpread1)
|