作成日: 2020/11/17 最終更新日: 2020/11/17
文書種別
使用方法
詳細
ComponentOne for WinForms 2017J v3(バージョン4.0.20173.286)で、Excelファイルへの画像のエクスポート機能が追加されました。これにより、セルに追加した画像を、SaveExcelメソッドでExcelファイルにエクスポートすることができます。
ただし、DrawModeをOwnerDrawに設定すると、そのままでは画像はExcelファイルに含まれません。この場合は、画像を所有者(Owner)が描画したものとして機能させる必要があるためで、事前に追加した画像をOwnerDrawCellイベントのe.Imageに設定することでこれを行います。このコードを実装したサンプルを以下に記載します。
◎サンプルコード(VB)
ただし、DrawModeをOwnerDrawに設定すると、そのままでは画像はExcelファイルに含まれません。この場合は、画像を所有者(Owner)が描画したものとして機能させる必要があるためで、事前に追加した画像をOwnerDrawCellイベントのe.Imageに設定することでこれを行います。このコードを実装したサンプルを以下に記載します。
◎サンプルコード(VB)
Imports C1.Win.C1FlexGrid
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
C1FlexGrid1.Cols(2).DataType = System.Type.[GetType]("System.Drawing.Bitmap")
C1FlexGrid1.Cols(2).Caption = "Image"
C1FlexGrid1.Rows(1).Height = 150
C1FlexGrid1.Cols(2).Width = 150
C1FlexGrid1(1, 1) = "Animal"
C1FlexGrid1.SetCellImage(1, 2, Image.FromFile("..¥..¥pic.jpg"))
C1FlexGrid1.Cols(2).ImageAlign = C1.Win.C1FlexGrid.ImageAlignEnum.Scale
C1FlexGrid1.DrawMode = DrawModeEnum.OwnerDraw
' OwnerDrawの指定
C1FlexGrid1.DrawMode = DrawModeEnum.OwnerDraw
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
C1FlexGrid1.SaveExcel("..//..//ExcelFile.xlsx", C1.Win.C1FlexGrid.FileFlags.IncludeFixedCells)
MessageBox.Show("Saved!")
End Sub
Private Sub C1FlexGrid1_OwnerDrawCell(sender As Object, e As OwnerDrawCellEventArgs) Handles C1FlexGrid1.OwnerDrawCell
If C1FlexGrid1.Cols(e.Col).DataType = System.Type.[GetType]("System.Drawing.Bitmap") Then
e.Image = C1FlexGrid1.GetCellImage(e.Row, e.Col)
End If
End Sub
End Class
◎サンプルコード(C#)using C1.Win.C1FlexGrid;
namespace FlexGridSaveExcelImage
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
c1FlexGrid1.Cols[2].DataType = System.Type.GetType("System.Drawing.Bitmap");
c1FlexGrid1.Cols[2].Caption = "Image";
c1FlexGrid1.Rows[1].Height = 150;
c1FlexGrid1.Cols[2].Width = 150;
c1FlexGrid1[1, 1] = "Animal";
c1FlexGrid1.SetCellImage(1, 2, Image.FromFile("..¥¥..¥¥pic.jpg"));
c1FlexGrid1.Cols[2].ImageAlign = C1.Win.C1FlexGrid.ImageAlignEnum.Scale;
//OwnerDrawの指定
c1FlexGrid1.DrawMode = DrawModeEnum.OwnerDraw;
}
private void button1_Click(object sender, EventArgs e)
{
c1FlexGrid1.SaveExcel("..//..//ExcelFile.xlsx",C1.Win.C1FlexGrid.FileFlags.IncludeFixedCells);
MessageBox.Show("Saved!");
}
private void c1FlexGrid1_OwnerDrawCell(object sender, OwnerDrawCellEventArgs e)
{
if (c1FlexGrid1.Cols[e.Col].DataType == System.Type.GetType("System.Drawing.Bitmap"))
{
e.Image = c1FlexGrid1.GetCellImage(e.Row, e.Col);
}
}
}
}
旧文書番号
86192