using Microsoft.Office.Core;
using OfficeExcel = Microsoft.Office.Interop.Excel;
namespace Core.File.Excel
{
/// <summary>
/// ExcelのShapeアクセサー
/// </summary>
public class ShapeAccessor : BaseShapeAccessor
{
#region 構築・破棄
/// <summary>
/// コンストラクタ
/// </summary>
/// <param name="shape"></param>
/// <param name="worksheet"></param>
/// <param name="application">ExcelApplicationアクセサー</param>
private ShapeAccessor(OfficeExcel.Shape shape, OfficeExcel.Worksheet worksheet, ExcelAccessor application)
: base(shape, application)
{
Worksheet = worksheet;
}
/// <summary>
/// 構成子
/// </summary>
/// <param name="shape"></param>
/// <param name="worksheet"></param>
/// <param name="application">ExcelApplicationアクセサー</param>
/// <returns></returns>
internal static ShapeAccessor GetAccessor(OfficeExcel.Shape shape, OfficeExcel.Worksheet worksheet, ExcelAccessor application)
{
return new ShapeAccessor(shape, worksheet, application);
}
#endregion
#region プロパティ
/// <summary>Worksheet</summary>
private OfficeExcel.Worksheet Worksheet { get; set; }
#endregion
#region Fill
/// <summary>Fill</summary>
private FillAccessor fill;
/// <summary>Fill</summary>
public FillAccessor Fill
{
get
{
if (this.fill == null)
{
OfficeExcel.FillFormat fill = Shape.Fill;
ReleaseComObjects.Add(fill);
this.fill = FillAccessor.GetAccessor(fill, Application);
}
return this.fill;
}
}
#endregion
#region TextFrame
/// <summary>TextFrame</summary>
private OfficeExcel.TextFrame textFrame;
/// <summary>TextFrame</summary>
private OfficeExcel.TextFrame TextFrame
{
get
{
if (this.textFrame == null)
{
this.textFrame = Shape.TextFrame;
ReleaseComObjects.Add(this.textFrame);
}
return this.textFrame;
}
}
/// <summary>Characters</summary>
private OfficeExcel.Characters characters;
/// <summary>Characters</summary>
private OfficeExcel.Characters Characters
{
get
{
if (this.characters == null)
{
this.characters = TextFrame.Characters(System.Type.Missing, System.Type.Missing);
ReleaseComObjects.Add(this.characters);
}
return this.characters;
}
}
/// <summary>Text</summary>
public string Text
{
get
{
return Characters.Text;
}
set
{
Characters.Text = value;
}
}
/// <summary>Font</summary>
private FontAccessor font;
/// <summary>Font</summary>
public FontAccessor Font
{
get
{
if (this.font == null)
{
OfficeExcel.Font font = Characters.Font;
ReleaseComObjects.Add(font);
this.font = FontAccessor.GetAccessor(font);
}
return this.font;
}
}
#endregion
#region Hyperlink
/// <summary>Hyperlinks</summary>
private OfficeExcel.Hyperlinks hyperlinks;
/// <summary>Hyperlinks</summary>
private OfficeExcel.Hyperlinks Hyperlinks
{
get
{
if (this.hyperlinks == null)
{
this.hyperlinks = Worksheet.Hyperlinks;
ReleaseComObjects.Add(this.hyperlinks);
}
return this.hyperlinks;
}
}
/// <summary>
/// Hyperlin設定
/// </summary>
/// <param name="address"></param>
public void setHyperlink(string address)
{
Hyperlinks.Add(Shape, address);
}
#endregion
}
#region 列挙型
/// <summary>オブジェクトの図形の種類</summary>
public enum ExcelShapeType
{
/// <summary>星 16</summary>
Star16point = MsoAutoShapeType.msoShape16pointStar,
/// <summary>星 24</summary>
Star24point = MsoAutoShapeType.msoShape24pointStar,
/// <summary>星 32</summary>
Star32point = MsoAutoShapeType.msoShape32pointStar,
/// <summary>星 4</summary>
Star4point = MsoAutoShapeType.msoShape4pointStar,
/// <summary>星 5</summary>
Star5point = MsoAutoShapeType.msoShape5pointStar,
/// <summary>星 8</summary>
Star8point = MsoAutoShapeType.msoShape8pointStar,
/// <summary>[戻る] ボタンまたは [前へ] ボタン。マウスクリックとマウスオーバーの操作をサポートします。</summary>
ActionButtonBackorPrevious = MsoAutoShapeType.msoShapeActionButtonBackorPrevious,
/// <summary>[先頭] ボタン。マウスクリックとマウスオーバーの操作をサポートします。</summary>
ActionButtonBeginning = MsoAutoShapeType.msoShapeActionButtonBeginning,
/// <summary>既定の画像やテキストのないボタン。マウスクリックとマウスオーバーの操作をサポートします。</summary>
ActionButtonCustom = MsoAutoShapeType.msoShapeActionButtonCustom,
/// <summary>[ドキュメント] ボタン。マウスクリックとマウスオーバーの操作をサポートします。</summary>
ActionButtonDocument = MsoAutoShapeType.msoShapeActionButtonDocument,
/// <summary>[行末] ボタン。マウスクリックとマウスオーバーの操作をサポートします。</summary>
ActionButtonEnd = MsoAutoShapeType.msoShapeActionButtonEnd,
/// <summary>[進む] ボタンまたは [次へ] ボタン。マウスクリックとマウスオーバーの操作をサポートします。</summary>
ActionButtonForwardorNext = MsoAutoShapeType.msoShapeActionButtonForwardorNext,
/// <summary>[ヘルプ] ボタン。マウスクリックとマウスオーバーの操作をサポートします。</summary>
ActionButtonHelp = MsoAutoShapeType.msoShapeActionButtonHelp,
/// <summary>[ホーム] ボタン。マウスクリックとマウスオーバーの操作をサポートします。</summary>
ActionButtonHome = MsoAutoShapeType.msoShapeActionButtonHome,
/// <summary>[情報] ボタン。マウスクリックとマウスオーバーの操作をサポートします。</summary>
ActionButtonInformation = MsoAutoShapeType.msoShapeActionButtonInformation,
/// <summary>[ビデオ] ボタン。マウスクリックとマウスオーバーの操作をサポートします。</summary>
ActionButtonMovie = MsoAutoShapeType.msoShapeActionButtonMovie,
/// <summary>[戻る] ボタン。マウスクリックとマウスオーバーの操作をサポートします。</summary>
ActionButtonReturn = MsoAutoShapeType.msoShapeActionButtonReturn,
/// <summary>[サウンド] ボタン。マウスクリックとマウスオーバーの操作をサポートします。</summary>
ActionButtonSound = MsoAutoShapeType.msoShapeActionButtonSound,
/// <summary>円弧</summary>
Arc = MsoAutoShapeType.msoShapeArc,
/// <summary>バルーン</summary>
Balloon = MsoAutoShapeType.msoShapeBalloon,
/// <summary>曲折矢印</summary>
BentArrow = MsoAutoShapeType.msoShapeBentArrow,
/// <summary>屈折矢印 (既定では上矢印)</summary>
BentUpArrow = MsoAutoShapeType.msoShapeBentUpArrow,
/// <summary>額縁</summary>
Bevel = MsoAutoShapeType.msoShapeBevel,
/// <summary>アーチ</summary>
BlockArc = MsoAutoShapeType.msoShapeBlockArc,
/// <summary>円柱</summary>
Can = MsoAutoShapeType.msoShapeCan,
/// <summary>山形</summary>
Chevron = MsoAutoShapeType.msoShapeChevron,
/// <summary>環状矢印</summary>
CircularArrow = MsoAutoShapeType.msoShapeCircularArrow,
/// <summary>雲形吹き出し</summary>
CloudCallout = MsoAutoShapeType.msoShapeCloudCallout,
/// <summary>十字形</summary>
Cross = MsoAutoShapeType.msoShapeCross,
/// <summary>直方体</summary>
Cube = MsoAutoShapeType.msoShapeCube,
/// <summary>下カーブ矢印</summary>
CurvedDownArrow = MsoAutoShapeType.msoShapeCurvedDownArrow,
/// <summary>下カーブ リボン</summary>
CurvedDownRibbon = MsoAutoShapeType.msoShapeCurvedDownRibbon,
/// <summary>左カーブ矢印</summary>
CurvedLeftArrow = MsoAutoShapeType.msoShapeCurvedLeftArrow,
/// <summary>右カーブ矢印</summary>
CurvedRightArrow = MsoAutoShapeType.msoShapeCurvedRightArrow,
/// <summary>上カーブ矢印</summary>
CurvedUpArrow = MsoAutoShapeType.msoShapeCurvedUpArrow,
/// <summary>上カーブ リボン</summary>
CurvedUpRibbon = MsoAutoShapeType.msoShapeCurvedUpRibbon,
/// <summary>ひし形</summary>
Diamond = MsoAutoShapeType.msoShapeDiamond,
/// <summary>ドーナツ</summary>
Donut = MsoAutoShapeType.msoShapeDonut,
/// <summary>中かっこ</summary>
DoubleBrace = MsoAutoShapeType.msoShapeDoubleBrace,
/// <summary>大かっこ</summary>
DoubleBracket = MsoAutoShapeType.msoShapeDoubleBracket,
/// <summary>小波</summary>
DoubleWave = MsoAutoShapeType.msoShapeDoubleWave,
/// <summary>下矢印</summary>
DownArrow = MsoAutoShapeType.msoShapeDownArrow,
/// <summary>下矢印吹き出し</summary>
DownArrowCallout = MsoAutoShapeType.msoShapeDownArrowCallout,
/// <summary>下リボン</summary>
DownRibbon = MsoAutoShapeType.msoShapeDownRibbon,
/// <summary>爆発 1</summary>
Explosion1 = MsoAutoShapeType.msoShapeExplosion1,
/// <summary>爆発 2</summary>
Explosion2 = MsoAutoShapeType.msoShapeExplosion2,
/// <summary>フローチャート : 代替処理</summary>
FlowchartAlternateProcess = MsoAutoShapeType.msoShapeFlowchartAlternateProcess,
/// <summary>フローチャート : カード</summary>
FlowchartCard = MsoAutoShapeType.msoShapeFlowchartCard,
/// <summary>フローチャート : 照合</summary>
FlowchartCollate = MsoAutoShapeType.msoShapeFlowchartCollate,
/// <summary>フローチャート : 結合子</summary>
FlowchartConnector = MsoAutoShapeType.msoShapeFlowchartConnector,
/// <summary>フローチャート : データ</summary>
FlowchartData = MsoAutoShapeType.msoShapeFlowchartData,
/// <summary>フローチャート : 判断</summary>
FlowchartDecision = MsoAutoShapeType.msoShapeFlowchartDecision,
/// <summary>フローチャート : 論理積ゲート</summary>
FlowchartDelay = MsoAutoShapeType.msoShapeFlowchartDelay,
/// <summary>フローチャート : 直接アクセス記憶</summary>
FlowchartDirectAccessStorage = MsoAutoShapeType.msoShapeFlowchartDirectAccessStorage,
/// <summary>フローチャート : 表示</summary>
FlowchartDisplay = MsoAutoShapeType.msoShapeFlowchartDisplay,
/// <summary>フローチャート : 書類</summary>
FlowchartDocument = MsoAutoShapeType.msoShapeFlowchartDocument,
/// <summary>フローチャート : 抜出し</summary>
FlowchartExtract = MsoAutoShapeType.msoShapeFlowchartExtract,
/// <summary>フローチャート : 内部記憶</summary>
FlowchartInternalStorage = MsoAutoShapeType.msoShapeFlowchartInternalStorage,
/// <summary>フローチャート : 磁気ディスク</summary>
FlowchartMagneticDisk = MsoAutoShapeType.msoShapeFlowchartMagneticDisk,
/// <summary>フローチャート : 手操作入力</summary>
FlowchartManualInput = MsoAutoShapeType.msoShapeFlowchartManualInput,
/// <summary>フローチャート : 手作業</summary>
FlowchartManualOperation = MsoAutoShapeType.msoShapeFlowchartManualOperation,
/// <summary>フローチャート : 組合せ</summary>
FlowchartMerge = MsoAutoShapeType.msoShapeFlowchartMerge,
/// <summary>フローチャート : 複数書類</summary>
FlowchartMultidocument = MsoAutoShapeType.msoShapeFlowchartMultidocument,
/// <summary>フローチャート : 他ページ結合子</summary>
FlowchartOffpageConnector = MsoAutoShapeType.msoShapeFlowchartOffpageConnector,
/// <summary>フローチャート : 論理和</summary>
FlowchartOr = MsoAutoShapeType.msoShapeFlowchartOr,
/// <summary>フローチャート : 定義済み処理</summary>
FlowchartPredefinedProcess = MsoAutoShapeType.msoShapeFlowchartPredefinedProcess,
/// <summary>フローチャート : 準備</summary>
FlowchartPreparation = MsoAutoShapeType.msoShapeFlowchartPreparation,
/// <summary>フローチャート : 処理</summary>
FlowchartProcess = MsoAutoShapeType.msoShapeFlowchartProcess,
/// <summary>フローチャート : せん孔テープ</summary>
FlowchartPunchedTape = MsoAutoShapeType.msoShapeFlowchartPunchedTape,
/// <summary>フローチャート : 順次アクセス記憶</summary>
FlowchartSequentialAccessStorage = MsoAutoShapeType.msoShapeFlowchartSequentialAccessStorage,
/// <summary>フローチャート : 分類</summary>
FlowchartSort = MsoAutoShapeType.msoShapeFlowchartSort,
/// <summary>フローチャート : 記憶データ</summary>
FlowchartStoredData = MsoAutoShapeType.msoShapeFlowchartStoredData,
/// <summary>フローチャート : 和接合</summary>
FlowchartSummingJunction = MsoAutoShapeType.msoShapeFlowchartSummingJunction,
/// <summary>フローチャート : 端子</summary>
FlowchartTerminator = MsoAutoShapeType.msoShapeFlowchartTerminator,
/// <summary>メモ</summary>
FoldedCorner = MsoAutoShapeType.msoShapeFoldedCorner,
/// <summary>ハート</summary>
Heart = MsoAutoShapeType.msoShapeHeart,
/// <summary>六角形</summary>
Hexagon = MsoAutoShapeType.msoShapeHexagon,
/// <summary>横巻き</summary>
HorizontalScroll = MsoAutoShapeType.msoShapeHorizontalScroll,
/// <summary>二等辺三角形</summary>
IsoscelesTriangle = MsoAutoShapeType.msoShapeIsoscelesTriangle,
/// <summary>左矢印</summary>
LeftArrow = MsoAutoShapeType.msoShapeLeftArrow,
/// <summary>左矢印吹き出し</summary>
LeftArrowCallout = MsoAutoShapeType.msoShapeLeftArrowCallout,
/// <summary>左中かっこ</summary>
LeftBrace = MsoAutoShapeType.msoShapeLeftBrace,
/// <summary>左大かっこ</summary>
LeftBracket = MsoAutoShapeType.msoShapeLeftBracket,
/// <summary>左右矢印</summary>
LeftRightArrow = MsoAutoShapeType.msoShapeLeftRightArrow,
/// <summary>左右矢印吹き出し</summary>
LeftRightArrowCallout = MsoAutoShapeType.msoShapeLeftRightArrowCallout,
/// <summary>三方向矢印</summary>
LeftRightUpArrow = MsoAutoShapeType.msoShapeLeftRightUpArrow,
/// <summary>二方向矢印</summary>
LeftUpArrow = MsoAutoShapeType.msoShapeLeftUpArrow,
/// <summary>稲妻</summary>
LightningBolt = MsoAutoShapeType.msoShapeLightningBolt,
/// <summary>線吹き出し 1 (枠付き)</summary>
LineCallout1 = MsoAutoShapeType.msoShapeLineCallout1,
/// <summary>強調線吹き出し 1</summary>
LineCallout1AccentBar = MsoAutoShapeType.msoShapeLineCallout1AccentBar,
/// <summary>強調線吹き出し 1 (枠付き)</summary>
LineCallout1BorderandAccentBar = MsoAutoShapeType.msoShapeLineCallout1BorderandAccentBar,
/// <summary>線吹き出し 1</summary>
LineCallout1NoBorder = MsoAutoShapeType.msoShapeLineCallout1NoBorder,
/// <summary>線吹き出し 2 (枠付き)</summary>
LineCallout2 = MsoAutoShapeType.msoShapeLineCallout2,
/// <summary>強調線吹き出し 2</summary>
LineCallout2AccentBar = MsoAutoShapeType.msoShapeLineCallout2AccentBar,
/// <summary>強調線吹き出し 2 (枠付き)</summary>
LineCallout2BorderandAccentBar = MsoAutoShapeType.msoShapeLineCallout2BorderandAccentBar,
/// <summary>線吹き出し 2</summary>
LineCallout2NoBorder = MsoAutoShapeType.msoShapeLineCallout2NoBorder,
/// <summary>線吹き出し 3 (枠付き)</summary>
LineCallout3 = MsoAutoShapeType.msoShapeLineCallout3,
/// <summary>強調線吹き出し 3</summary>
LineCallout3AccentBar = MsoAutoShapeType.msoShapeLineCallout3AccentBar,
/// <summary>強調線吹き出し 3 (枠付き)</summary>
LineCallout3BorderandAccentBar = MsoAutoShapeType.msoShapeLineCallout3BorderandAccentBar,
/// <summary>線吹き出し 3</summary>
LineCallout3NoBorder = MsoAutoShapeType.msoShapeLineCallout3NoBorder,
/// <summary>線吹き出し 4 (枠付き)</summary>
LineCallout4 = MsoAutoShapeType.msoShapeLineCallout4,
/// <summary>強調線吹き出し 4</summary>
LineCallout4AccentBar = MsoAutoShapeType.msoShapeLineCallout4AccentBar,
/// <summary>強調線吹き出し 4 (枠付き)</summary>
LineCallout4BorderandAccentBar = MsoAutoShapeType.msoShapeLineCallout4BorderandAccentBar,
/// <summary>線吹き出し 4</summary>
LineCallout4NoBorder = MsoAutoShapeType.msoShapeLineCallout4NoBorder,
/// <summary>値の取得のみ可能です。他の状態の組み合わせを示します。</summary>
Mixed = MsoAutoShapeType.msoShapeMixed,
/// <summary>月</summary>
Moon = MsoAutoShapeType.msoShapeMoon,
/// <summary>禁止</summary>
NoSymbol = MsoAutoShapeType.msoShapeNoSymbol,
/// <summary>V 字形矢印</summary>
NotchedRightArrow = MsoAutoShapeType.msoShapeNotchedRightArrow,
/// <summary>サポートされていません。</summary>
NotPrimitive = MsoAutoShapeType.msoShapeNotPrimitive,
/// <summary>八角形</summary>
Octagon = MsoAutoShapeType.msoShapeOctagon,
/// <summary>楕円</summary>
Oval = MsoAutoShapeType.msoShapeOval,
/// <summary>円形吹き出し</summary>
OvalCallout = MsoAutoShapeType.msoShapeOvalCallout,
/// <summary>平行四角形</summary>
Parallelogram = MsoAutoShapeType.msoShapeParallelogram,
/// <summary>ホームベース</summary>
Pentagon = MsoAutoShapeType.msoShapePentagon,
/// <summary>ブローチ</summary>
Plaque = MsoAutoShapeType.msoShapePlaque,
/// <summary>四方向矢印</summary>
QuadArrow = MsoAutoShapeType.msoShapeQuadArrow,
/// <summary>四方向矢印吹き出し</summary>
QuadArrowCallout = MsoAutoShapeType.msoShapeQuadArrowCallout,
/// <summary>四角形</summary>
Rectangle = MsoAutoShapeType.msoShapeRectangle,
/// <summary>四角形吹き出し</summary>
RectangularCallout = MsoAutoShapeType.msoShapeRectangularCallout,
/// <summary>五角形</summary>
RegularPentagon = MsoAutoShapeType.msoShapeRegularPentagon,
/// <summary>右矢印</summary>
RightArrow = MsoAutoShapeType.msoShapeRightArrow,
/// <summary>右矢印吹き出し</summary>
RightArrowCallout = MsoAutoShapeType.msoShapeRightArrowCallout,
/// <summary>右中かっこ</summary>
RightBrace = MsoAutoShapeType.msoShapeRightBrace,
/// <summary>右大かっこ</summary>
RightBracket = MsoAutoShapeType.msoShapeRightBracket,
/// <summary>直角三角形</summary>
RightTriangle = MsoAutoShapeType.msoShapeRightTriangle,
/// <summary>角丸四角形</summary>
RoundedRectangle = MsoAutoShapeType.msoShapeRoundedRectangle,
/// <summary>角丸四角形吹き出し</summary>
RoundedRectangularCallout = MsoAutoShapeType.msoShapeRoundedRectangularCallout,
/// <summary>スマイル</summary>
SmileyFace = MsoAutoShapeType.msoShapeSmileyFace,
/// <summary>ストライプ矢印</summary>
StripedRightArrow = MsoAutoShapeType.msoShapeStripedRightArrow,
/// <summary>太陽</summary>
Sun = MsoAutoShapeType.msoShapeSun,
/// <summary>台形</summary>
Trapezoid = MsoAutoShapeType.msoShapeTrapezoid,
/// <summary>上矢印</summary>
UpArrow = MsoAutoShapeType.msoShapeUpArrow,
/// <summary>上矢印吹き出し</summary>
UpArrowCallout = MsoAutoShapeType.msoShapeUpArrowCallout,
/// <summary>上下矢印</summary>
UpDownArrow = MsoAutoShapeType.msoShapeUpDownArrow,
/// <summary>上下矢印吹き出し</summary>
UpDownArrowCallout = MsoAutoShapeType.msoShapeUpDownArrowCallout,
/// <summary>上リボン</summary>
UpRibbon = MsoAutoShapeType.msoShapeUpRibbon,
/// <summary>U ターン矢印</summary>
UTurnArrow = MsoAutoShapeType.msoShapeUTurnArrow,
/// <summary>縦巻き</summary>
VerticalScroll = MsoAutoShapeType.msoShapeVerticalScroll,
/// <summary>大波</summary>
Wave = MsoAutoShapeType.msoShapeWave
}
#endregion
}