using OfficeExcel = Microsoft.Office.Interop.Excel;
namespace Core.File.Excel
{
/// <summary>
/// ExcelのSheetアクセサー
/// </summary>
public class SheetAccessor : BaseExcelAccessor
{
#region 構築・破棄
/// <summary>
/// コンストラクタ
/// </summary>
/// <param name="worksheet"></param>
/// <param name="application">ExcelApplicationアクセサー</param>
private SheetAccessor(OfficeExcel.Worksheet worksheet, ExcelAccessor application)
:base(application)
{
Worksheet = worksheet;
}
/// <summary>
/// 構成子
/// </summary>
/// <param name="workbook"></param>
/// <param name="application">ExcelApplicationアクセサー</param>
/// <returns></returns>
internal static SheetAccessor GetAccessor(OfficeExcel.Worksheet worksheet, ExcelAccessor application)
{
return new SheetAccessor(worksheet, application);
}
#endregion
#region プロパティ
/// <summary>Worksheet</summary>
private OfficeExcel.Worksheet Worksheet { get; set; }
/// <summary>名前</summary>
public string Name
{
get
{
return Worksheet.Name;
}
set
{
Worksheet.Name = value;
}
}
#endregion
#region WorkSheet
/// <summary>
/// シート-移動
/// </summary>
/// <param name="after">指定したシートの後ろへ移動</param>
public void Move(SheetAccessor after)
{
Worksheet.Move(System.Type.Missing, after.Worksheet);
}
/// <summary>
/// シート-コピー
/// </summary>
/// <param name="after">指定したシートの後ろへコピー</param>
public void Copy(SheetAccessor after)
{
Worksheet.Copy(System.Type.Missing, after.Worksheet);
}
/// <summary>
/// 選択
/// </summary>
public void Select()
{
Worksheet.Select();
}
#endregion
#region Cell
/// <summary>Sheets</summary>
private OfficeExcel.Range cells;
/// <summary>Sheets</summary>
private OfficeExcel.Range Cells
{
get
{
if (this.cells == null)
{
this.cells = Worksheet.Cells;
ReleaseComObjects.Add(this.cells);
}
return this.cells;
}
}
/// <summary>
/// Cell取得
/// </summary>
/// <param name="rowIndex">行インデックス</param>
/// <param name="columnIndex">列インデックス</param>
/// <returns></returns>
public CellAccessor GetCell(int rowIndex, int columnIndex)
{
OfficeExcel.Range cell = Cells[rowIndex, columnIndex];
// 解放COMオブジェクト追加
ReleaseComObjects.Add(cell);
return CellAccessor.GetAccessor(cell, Worksheet, Application);
}
/// <summary>
/// Cell取得
/// </summary>
/// <param name="row1Index">行1インデックス</param>
/// <param name="column1Index">列1インデックス</param>
/// <param name="row2Index">行2インデックス</param>
/// <param name="column2Index">列2インデックス</param>
/// <returns></returns>
public CellAccessor GetCell(int row1Index, int column1Index, int row2Index, int column2Index)
{
OfficeExcel.Range cell1 = Cells[row1Index, column1Index];
// 解放COMオブジェクト追加
ReleaseComObjects.Add(cell1);
OfficeExcel.Range cell2 = Cells[row2Index, column2Index];
// 解放COMオブジェクト追加
ReleaseComObjects.Add(cell2);
OfficeExcel.Range range = Worksheet.get_Range(cell1, cell2);
// 解放COMオブジェクト追加
ReleaseComObjects.Add(range);
return CellAccessor.GetAccessor(range, Worksheet, Application);
}
/// <summary>
/// Cell取得
/// </summary>
/// <param name="name">名前付き名前</param>
/// <returns></returns>
public CellAccessor GetCell(string name)
{
OfficeExcel.Range cell = Worksheet.get_Range(name);
// 解放COMオブジェクト追加
ReleaseComObjects.Add(cell);
return CellAccessor.GetAccessor(cell, Worksheet, Application);
}
/// <summary>
/// Cell取得
/// </summary>
/// <param name="name1">名前付きCell1</param>
/// <param name="name2">名前付きCell2</param>
/// <returns></returns>
public CellAccessor GetCell(string name1, string name2)
{
OfficeExcel.Range cell = Worksheet.get_Range(name1, name2);
// 解放COMオブジェクト追加
ReleaseComObjects.Add(cell);
return CellAccessor.GetAccessor(cell, Worksheet, Application);
}
#endregion
#region Shepe
/// <summary>Sheets</summary>
private OfficeExcel.Shapes shapes;
/// <summary>Sheets</summary>
private OfficeExcel.Shapes Shapes
{
get
{
if (this.shapes == null)
{
this.shapes = Worksheet.Shapes;
ReleaseComObjects.Add(this.shapes);
}
return this.shapes;
}
}
/// <summary>
/// Shepe取得
/// </summary>
/// <returns></returns>
public ShapeAccessor AddShape(ExcelShapeType shapeType, float left = 0, float top = 0, float width = 0, float height = 0)
{
OfficeExcel.Shape shape = Shapes.AddShape((MsoAutoShapeType)shapeType, left, top, width, height);
// 解放COMオブジェクト追加
ReleaseComObjects.Add(shape);
return ShapeAccessor.GetAccessor(shape, Worksheet, Application);
}
/// <summary>
/// Connector取得
/// </summary>
/// <returns></returns>
public ConnectorAccessor AddConnector(ExcelConnectorType connectorType, float beginX = 0, float beginY = 0, float endX = 0, float endY = 0)
{
OfficeExcel.Shape connector = Shapes.AddConnector((MsoConnectorType)connectorType, beginX, beginY, endX, endY);
// 解放COMオブジェクト追加
ReleaseComObjects.Add(connector);
return ConnectorAccessor.GetAccessor(connector, Application);
}
#endregion
}
}
0 件のコメント:
コメントを投稿