作成日: 2020/04/23 最終更新日: 2020/05/20
文書種別
使用方法
詳細
画像を追加するにはworksheet.Shapes.AddPictureメソッドやworksheet.Shapes.AddPictureInPixelメソッドを使用しますが、この場合、シートのA1セルの左上端からのポイント値もしくはピクセル値を指定する必要があります。
バージョン3.1.2より、CellInfoクラスにGetRangeBoundaryメソッドが追加されました。
このメソッドでは指定したセル範囲のRectangleを取得することができますので、これを利用してセルのピクセル位置を算出することができます。
実装方法などの詳細は下記のデモをご参照ください。
指定範囲に画像を追加
バージョン3.0.1以前を使用している場合は、下記のコードのようにセルのピクセル位置を算出してAddPictureInPixelメソッドを実行してください。
◎サンプルコード(VB)
◎サンプルコード(C#)
バージョン3.1.2より、CellInfoクラスにGetRangeBoundaryメソッドが追加されました。
このメソッドでは指定したセル範囲のRectangleを取得することができますので、これを利用してセルのピクセル位置を算出することができます。
実装方法などの詳細は下記のデモをご参照ください。
指定範囲に画像を追加
バージョン3.0.1以前を使用している場合は、下記のコードのようにセルのピクセル位置を算出してAddPictureInPixelメソッドを実行してください。
◎サンプルコード(VB)
Imports GrapeCity.Documents.Excel
Imports System.Drawing
・・・
Sub Main()
Dim book As New Workbook
Dim sheet As IWorksheet = book.ActiveSheet
Dim cell As IRange = sheet.Range("B3")
Dim rect As Rectangle = GetCellPosition(sheet, cell)
sheet.Shapes.AddPictureInPixel("DioDocs_Mark.png", rect.X, rect.Y, rect.Width, rect.Height)
book.Save("Test.xlsx")
End Sub
Private Function GetCellPosition(ByVal sheet As IWorksheet, ByVal cell As IRange) As Rectangle
Dim cellLeft As Integer = cell.Column
Dim cellTop As Integer = cell.Row
Dim result As Rectangle = New Rectangle()
result.Width = CInt(sheet.Columns(cellLeft).ColumnWidthInPixel)
result.Height = CInt(sheet.Rows(cellTop).RowHeightInPixel)
For colIndex As Integer = 0 To cellLeft - 1
result.X += CInt(sheet.Columns(colIndex).ColumnWidthInPixel)
Next
For rowIndex As Integer = 0 To cellTop - 1
result.Y += CInt(sheet.Rows(rowIndex).RowHeightInPixel)
Next
Return result
End Function
Imports System.Drawing
・・・
Sub Main()
Dim book As New Workbook
Dim sheet As IWorksheet = book.ActiveSheet
Dim cell As IRange = sheet.Range("B3")
Dim rect As Rectangle = GetCellPosition(sheet, cell)
sheet.Shapes.AddPictureInPixel("DioDocs_Mark.png", rect.X, rect.Y, rect.Width, rect.Height)
book.Save("Test.xlsx")
End Sub
Private Function GetCellPosition(ByVal sheet As IWorksheet, ByVal cell As IRange) As Rectangle
Dim cellLeft As Integer = cell.Column
Dim cellTop As Integer = cell.Row
Dim result As Rectangle = New Rectangle()
result.Width = CInt(sheet.Columns(cellLeft).ColumnWidthInPixel)
result.Height = CInt(sheet.Rows(cellTop).RowHeightInPixel)
For colIndex As Integer = 0 To cellLeft - 1
result.X += CInt(sheet.Columns(colIndex).ColumnWidthInPixel)
Next
For rowIndex As Integer = 0 To cellTop - 1
result.Y += CInt(sheet.Rows(rowIndex).RowHeightInPixel)
Next
Return result
End Function
◎サンプルコード(C#)
using GrapeCity.Documents.Excel;
using System.Drawing;
・・・
static void Main()
{
var book = new Workbook();
var sheet = book.ActiveSheet;
var cell = sheet.Range["B3"];
var rect = GetCellPosition(sheet, cell);
sheet.Shapes.AddPictureInPixel("DioDocs_Mark.png", rect.X, rect.Y,rect.Width, rect.Height);
book.Save("Test.xlsx");
}
static Rectangle GetCellPosition(IWorksheet sheet, IRange cell)
{
int cellLeft = cell.Column;
int cellTop = cell.Row;
Rectangle result = new Rectangle();
result.Width = (int)sheet.Columns[cellLeft].ColumnWidthInPixel;
result.Height = (int)sheet.Rows[cellTop].RowHeightInPixel;
for (int colIndex = 0; colIndex < cellLeft; colIndex++)
result.X += (int)sheet.Columns[colIndex].ColumnWidthInPixel;
for (int rowIndex = 0; rowIndex < cellTop; rowIndex++)
result.Y += (int)sheet.Rows[rowIndex].RowHeightInPixel;
return result;
}
using System.Drawing;
・・・
static void Main()
{
var book = new Workbook();
var sheet = book.ActiveSheet;
var cell = sheet.Range["B3"];
var rect = GetCellPosition(sheet, cell);
sheet.Shapes.AddPictureInPixel("DioDocs_Mark.png", rect.X, rect.Y,rect.Width, rect.Height);
book.Save("Test.xlsx");
}
static Rectangle GetCellPosition(IWorksheet sheet, IRange cell)
{
int cellLeft = cell.Column;
int cellTop = cell.Row;
Rectangle result = new Rectangle();
result.Width = (int)sheet.Columns[cellLeft].ColumnWidthInPixel;
result.Height = (int)sheet.Rows[cellTop].RowHeightInPixel;
for (int colIndex = 0; colIndex < cellLeft; colIndex++)
result.X += (int)sheet.Columns[colIndex].ColumnWidthInPixel;
for (int rowIndex = 0; rowIndex < cellTop; rowIndex++)
result.Y += (int)sheet.Rows[rowIndex].RowHeightInPixel;
return result;
}
旧文書番号
85516