C#的EXCEL操作类

// 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/beckhans/archive/2008/08/22/2814570.aspx
///---------------------------------------------------------------------------
/// 機能ID     :ExcelAccess
///
/// 機能名     :Excel操作クラス
///
/// システム   :バッチもばっちり
///
/// 作成日     :2008年6月5日
///
/// 作成者     :
///
/// 機能説明   :Excelに対して操作を提供する。
///---------------------------------------------------------------------------

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Core;

using Excel = Microsoft.Office.Interop.Excel;

namespace GeoLogDealer
{
    public class ExcelAccess
    {
        private Excel.Application m_objExcelApp;              //Excelのインスタンス
        private Excel.Workbook m_objExcelWorkBook;            //ワークブックのインスタンス
        private Excel.Worksheet m_objExcelWorkSheet;          //ワークシートのインスタンス
        private Excel.Worksheet m_objTempWorkSheet;           //臨時ワークシート

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :コンストラクタ
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :なし
        ///
        /// 作成日   :2008年6月5日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :コンストラクタ
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public ExcelAccess()
        {
            //Excelのインスタンスの生成を行う。
            m_objExcelApp = new Excel.Application();
            m_objExcelApp.DisplayAlerts = false;
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelファイルのオープン操作
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :p_strExcelFileName - Excelファイル名
        ///
        /// 作成日   :2008年6月5日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excelファイルのオープン操作を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void OpenExcelFile(string p_strExcelFileName)
        {
            //Excelフォーマットファイルを開く
            m_objExcelWorkBook = m_objExcelApp.Workbooks.Open( p_strExcelFileName, Type.Missing, 
                true,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,
                Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,
                Type.Missing,Type.Missing);
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelファイルのオープン操作
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :p_strExcelFileName - Excelファイル名
        ///           p_ReadOnlyFlag - ReadOnlyFlag
        ///
        /// 作成日   :2008年6月5日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excelファイルのオープン操作を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void OpenExcelFile(string p_strExcelFileName,bool p_ReadOnlyFlag)
        {
            //Excelフォーマットファイルを開く
            m_objExcelWorkBook = m_objExcelApp.Workbooks.Open(p_strExcelFileName, Type.Missing,
                p_ReadOnlyFlag, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
                Type.Missing, Type.Missing, Type.Missing);
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelのワークシートのオープン操作
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :p_strSheetName - ワークシート名
        ///
        /// 作成日   :2008年6月5日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excelのワークシートのオープン操作を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void SelectSheet(string p_strSheetName)
        {
            //入力したワークシート名より、Excelのワークシートを選択する
            m_objExcelWorkSheet = (Excel.Worksheet)m_objExcelWorkBook.Sheets[p_strSheetName];
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelのワークシートのオープン操作
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :なし
        ///
        /// 作成日   :2008年6月5日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :ExcelのActiveシートのオープン操作を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void SelectSheet()
        {
            //ExcelのActiveシートを選択する
            m_objExcelWorkSheet = (Excel.Worksheet)m_objExcelWorkBook.ActiveSheet;
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelのワークシートのオープン操作
        ///
        /// 返り値   :p_intSheetIndex - ワークシート番号
        ///
        /// 引き数   :なし
        ///
        /// 作成日   :2008年6月5日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :ExcelのActiveシートのオープン操作を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------

        public void SelectSheet(int p_intSheetIndex)
        {
            m_objExcelWorkSheet =(Excel.Worksheet)m_objExcelWorkBook.Sheets[p_intSheetIndex];
        }

扫描二维码关注公众号,回复: 2565935 查看本文章

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelの一時ワークシートのオープン操作
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :p_strSheetName - ワークシート名
        ///
        /// 作成日   :2008年6月5日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excelの一時ワークシートのオープン操作を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void SelectTempSheet(string p_strSheetName)
        {
            m_objTempWorkSheet = (Excel.Worksheet)m_objExcelWorkBook.Sheets[p_strSheetName];
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelワークシートのコピー処理
        ///
        /// 返り値   :Integer - Excelの最大行
        ///
        /// 引き数   :なし
        ///
        /// 作成日   :2008年6月3日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excelワークシートのコピー処理を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------

        public void CopyWorkSheet()
        {
            m_objExcelWorkSheet.Copy(Type.Missing, 
                m_objExcelWorkBook.Sheets[SheetCount()]);
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelワークシート数取得処理
        ///
        /// 返り値   :Integer - Excelのワークシート数
        ///
        /// 引き数   :なし
        ///
        /// 作成日   :2008年6月3日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excelワークシート数の取得処理を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------

        public int SheetCount()
        {
            return m_objExcelWorkBook.Sheets.Count;
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelワークシート名の取得処理
        ///
        /// 返り値   :Excelワークシート名
        ///
        /// 引き数   :なし
        ///
        /// 作成日   :2008年6月3日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excelワークシート名の取得処理を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------

        public string SheetName()
        {
            Excel.Worksheet objWorkSheet = (Excel.Worksheet)m_objExcelWorkBook.ActiveSheet;
            return objWorkSheet.Name;
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelのセルの内容設定処理
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :p_intRows - Excelの行
        ///           p_intColumn - Excelの列
        ///           p_strValue - 設定項目
        ///
        /// 作成日   :2008年6月3日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excelのセルの内容設定処理を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void SetCellValue(int p_intRows, int p_intColumn, string p_strValue)
        {
            //セルの内容を設定する。
            if (p_intRows <= 65528)
            {
                m_objExcelWorkSheet.Cells[p_intRows, p_intColumn] = p_strValue;
            }
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelのセルの内容取得処理
        ///
        /// 返り値   :取得したExcelのセル
        ///
        /// 引き数   :p_intRows - Excelの行
        ///           p_intColumn - Excelの列
        ///
        /// 作成日   :2008年6月3日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excelのセルの内容取得処理を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public string GetCellValue(int p_intRows, int p_intColumn)
        {
            if (p_intRows <= 65536)
            {

                Excel.Range objRange = (Excel.Range)m_objExcelWorkSheet.Cells[p_intRows, p_intColumn];

                //セルの内容取得処理
                if (objRange.Text == null)
                {
                    return string.Empty;
                }
                else
                {
                    return objRange.Text.ToString();
                }
            }
            else
            {
                return string.Empty;
            }
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelの印刷処理
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :p_strStartCell - Excelの開始のセル
        ///           p_strEndCell - Excelの終了のセル
        ///
        /// 作成日   :2008年6月3日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excelの印刷処理を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void SetPageArea(string p_strStartCell,string p_strEndCell)
        {
            m_objExcelWorkSheet.PageSetup.PrintArea = 
                p_strStartCell + ":" + p_strEndCell;
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :指定のExcelファイルによって、名前を付けて保存処理
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :p_strName - 名前を付けて保存のファイル名
        ///
        /// 作成日   :2008年6月5日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :指定のExcelファイルによって、名前を付けて保存処理を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void SaveAs(string p_strName)
        {
            //指定のExcelファイルによって、名前を付けて保存処理
            m_objExcelWorkBook.SaveAs(p_strName, Type.Missing, Type.Missing, Type.Missing, 
                Type.Missing,Type.Missing,Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing,
                Type.Missing,Type.Missing,Type.Missing,Type.Missing);
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :指定のExcelファイルによって、保存処理
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :なし
        ///
        /// 作成日   :2008年6月5日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :指定のExcelファイルによって、名前を付けて保存処理を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------

        public void Save()
        {
            m_objExcelWorkBook.Save();
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excel最大行の取得処理
        ///
        /// 返り値   :Excelの最大行
        ///
        /// 引き数   :なし
        ///
        /// 作成日   :2008年6月3日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excel最大行の取得処理を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public int RowsCount()
        {
            //Excel最大行の取得処理
            return m_objExcelWorkSheet.UsedRange.Rows.Count;
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excel最大列の取得処理
        ///
        /// 返り値   :Excelの最大列
        ///
        /// 引き数   :なし
        ///
        /// 作成日   :2008年6月3日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excel最大列の取得処理を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public int ColumnCount()
        {
            //Excel最大列の取得処理
            return m_objExcelWorkSheet.UsedRange.Columns.Count;
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelのワークシートの破棄
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :なし
        ///
        /// 作成日   :2008年6月3日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excelのワークシートの破棄を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        private void CloseWorkBook()
        {
            if (m_objExcelWorkSheet != null)
            {
                //ワークシートをリリースする。
                System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcelWorkSheet);
                m_objExcelWorkSheet = null;
            }

            if (m_objTempWorkSheet != null)
            {
                //ワークシートをリリースする。
                System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objTempWorkSheet);
                m_objTempWorkSheet = null;
            }

            if (m_objExcelWorkBook != null)
            {
                m_objExcelWorkBook.Close(false, Type.Missing, Type.Missing);
                //ワークブックをリリースする。
                System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcelWorkBook);
                m_objExcelWorkBook = null;
            }

            GC.Collect();
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelのワークシートの破棄
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :なし
        ///
        /// 作成日   :2008年6月3日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excelのワークシートの破棄を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void Close()
        {
            //ワークブックを保存してからクロースする。
            CloseWorkBook();

            GC.Collect();
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelのアプリケーションの破棄
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :なし
        ///
        /// 作成日   :2008年6月3日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excelのアプリケーションの破棄を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        private void ExitApp()
        {
            CloseWorkBook();

            //Excelを終了する。
            m_objExcelApp.Quit();

            if (m_objExcelApp != null)
            {
                //Excelをリリースする。
                System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcelApp);
                m_objExcelApp = null;
            }
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelのアプリケーションの破棄
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :なし
        ///
        /// 作成日   :2008年6月3日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excelのアプリケーションの破棄を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void ExitApplication()
        {
            ExitApp();

            GC.Collect();
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :FontColorの設定操作
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :p_intRow - Excelの行
        ///           p_intColumn - Excelの列
        ///           p_intColorIndex - Colorのインデックス
        ///
        /// 作成日   :2008年6月5日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :FontColorの設定を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void ChangeFontColor(int p_intRow, int p_intColumn,int p_intColorIndex)
        {
            if (p_intRow <= 65528)
            {
                //ExcelのRange取得
                Excel.Range objRange = (Excel.Range)m_objExcelWorkSheet.Cells[p_intRow, p_intColumn];

                //FontColorの設定操作
                objRange.Font.ColorIndex = p_intColorIndex;
            }
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :FontColorの設定操作
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :p_intStartRow - Excelの開始行
        ///           p_intStartColumn - Excelの開始列
        ///           p_intEndRow - Excelの終了行
        ///           p_intEndColumn - Excelの終了列
        ///           p_intColorIndex - Colorのインデックス
        ///
        /// 作成日   :2008年6月5日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :FontColorの設定を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void ChangeFontColor(int p_intStartRow,int p_intStartColumn,int p_intEndRow,
            int p_intEndColumn,int p_intColorIndex)
        {
            if (p_intStartRow <= 65528 && p_intEndRow <= 65528)
            {
                //ExcelのRange取得
                Excel.Range objRange = m_objExcelWorkSheet.get_Range(m_objExcelWorkSheet.Cells
                    [p_intStartRow, p_intStartColumn], m_objExcelWorkSheet.Cells
                    [p_intEndRow, p_intEndColumn]);

                ////FontColorの設定操作
                objRange.Font.ColorIndex = p_intColorIndex;
            }
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelファイル指定セルの文字の配置の設定
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :p_intRow - Excelの行
        ///           p_intColumn - Excelの列
        ///           Halign - 横位置文字の配置
        ///           Valign - 縦位置文字の配置
        ///
        /// 作成日   :2008年6月5日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excelファイル指定セルの文字の配置の設定を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void SetAlign(int p_intRow, int p_intColumn,
                Excel.XlHAlign Halign,Excel.XlVAlign Valign)
        {
            if (p_intRow <= 65528)
            {
                //ExcelのRange取得
                Excel.Range objRange = m_objExcelWorkSheet.get_Range
                             (m_objExcelWorkSheet.Cells[p_intRow, p_intColumn],
                             m_objExcelWorkSheet.Cells[p_intRow, p_intColumn]);

                //横位置文字の配置の設定
                objRange.HorizontalAlignment = Halign;

                //縦位置文字の配置の設定
                objRange.VerticalAlignment = Valign;
            }

        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :ExcelのRangeの取得
        ///
        /// 返り値   :取得したExcelのRange
        ///
        /// 引き数   :p_intStartRow - Excelの開始行
        ///           p_intStartColumn - Excelの開始列
        ///           p_intEndRow - Excelの終了行
        ///           p_intEndColumn - Excelの終了列
        ///
        /// 作成日   :2008年6月5日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :ExcelのRangeの取得を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public Excel.Range GetRange(int p_intStartRow, int p_intStartColumn,
            int p_intEndRow, int p_intEndColumn)
        {
            if (p_intStartRow <= 65528 && p_intEndRow <= 65528)
            {
                Excel.Range objRange = m_objExcelWorkSheet.get_Range
                             (m_objExcelWorkSheet.Cells[p_intStartRow, p_intStartColumn],
                             m_objExcelWorkSheet.Cells[p_intEndRow, p_intEndColumn]);

                return objRange;
            }
            else
            {
                return null;
            }
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelファイル指定範囲の色の設定
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :p_intRow - Excelの行
        ///           p_intColumn - Excelの列
        ///           p_intcolorIndex - Colorのインデックス
        ///
        /// 作成日   :2008年6月5日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excelファイル指定範囲の文字の配置の設定を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void SetBackColor(int p_intRow, int p_intColumn,int p_intcolorIndex)
        {
            if (p_intRow <= 65528)
            {
                Excel.Range objRange = m_objExcelWorkSheet.get_Range
                              (m_objExcelWorkSheet.Cells[p_intRow, p_intColumn],
                              m_objExcelWorkSheet.Cells[p_intRow, p_intColumn]);

                objRange.Interior.ColorIndex = p_intcolorIndex;
            }

        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelファイル指定範囲の色の設定
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :p_intStartRow - Excelの開始行
        ///           p_intStartColumn - Excelの開始列
        ///           p_intEndRow - Excelの終了行
        ///           p_intEndColumn - Excelの終了列
        ///           p_intColorIndex - Colorのインデックス
        ///
        /// 作成日  :2008年6月5日
        ///
        /// 作成者  :
        ///
        /// 機能説明 :Excelファイル指定範囲の文字の配置の設定を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void SetBackColor(int p_intStartRow, int p_intStartColumn, 
            int p_intEndRow,int p_intEndColumn,int p_intcolorIndex)
        {
            if (p_intStartRow <= 65528 && p_intEndRow <= 65528)
            {
                Excel.Range objRange = m_objExcelWorkSheet.get_Range
                              (m_objExcelWorkSheet.Cells[p_intStartRow, p_intStartColumn],
                              m_objExcelWorkSheet.Cells[p_intEndRow, p_intEndColumn]);

                objRange.Interior.ColorIndex = p_intcolorIndex;
            }
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelファイルの行内容のコピー操作
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :p_objFromRange - コピー元の範囲
        ///
        /// 作成日   :2008年6月5日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excelファイルの行内容のコピー操作を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void CopyToClipboard(Excel.Range p_objFromRange)
        {
            p_objFromRange.Copy(Type.Missing);
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelファイルの内容のペースト操作
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :p_objDestRange - コピー先の範囲
        ///
        /// 作成日   :2008年6月5日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excelファイルの内容のペースト操作を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void PasteFromClipboard(Excel.Range p_objDestRange)
        {
            // Excelファイルの内容のペースト操作
            p_objDestRange.PasteSpecial(Excel.XlPasteType.xlPasteAll,
                Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone,
                Type.Missing, Type.Missing);
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelファイル指定セルの行高の設定
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :p_intRow - Excelの行
        ///           p_intHeight - 行高
        ///
        /// 作成日   :2008年6月5日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excelファイル指定セルの行高の設定を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void SetRowHeigh(int p_intRow,int p_intHeight)
        {
            int intExcelTotalColumn = ColumnCount();

            // ExcelのRange取得
            if (p_intRow <= 65528)
            {
                Excel.Range objRange = (Excel.Range)m_objExcelWorkSheet.Cells
                    [p_intRow, intExcelTotalColumn];

                objRange.RowHeight = p_intHeight;
            }
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelファイル指定セルの行高の設定
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :p_intStartRow - Excelの開始行
        ///           p_intEndRow - Excelの終了行
        ///           p_intHeight - 行高
        ///
        /// 作成日   :2008年6月5日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excelファイル指定セルの行高の設定を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void SetRowHeigh(int p_intStartRow,int p_intEndRow,int p_intHeight)
        {
            int intExcelTotalColumn = ColumnCount();

            if (p_intStartRow <= 65528 && p_intEndRow <= 65528)
            {
                // ExcelのRange取得
                Excel.Range objRange = (Excel.Range)m_objExcelWorkSheet.get_Range(
                    m_objExcelWorkSheet.Cells[p_intStartRow, intExcelTotalColumn],
                    m_objExcelWorkSheet.Cells[p_intEndRow, intExcelTotalColumn]);

                objRange.RowHeight = p_intHeight;
            }
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelワークシート名の設定処理
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :p_strOldName - 古いExcelワークシート名
        ///          :p_strNewName - 新しいExcelワークシート名
        ///
        /// 作成日   :2008年6月3日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excelワークシート名の設定処理を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void SetSheetName(string p_strOldName, string p_strNewName)
        {
            Excel.Worksheet objSheet = (Excel.Worksheet)m_objExcelWorkBook.Sheets[p_strOldName];
            objSheet.Name = p_strNewName;
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelワークシートの隠れ処理
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :p_strSheetName - Excelワークシート名
        ///
        /// 作成日   :2008年6月3日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excelワークシート名の隠れ処理を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void HideSheet(string p_strSheetName)
        {
            Excel.Worksheet objSheet = (Excel.Worksheet)m_objExcelWorkBook.Sheets[p_strSheetName];
            objSheet.Visible = Excel.XlSheetVisibility.xlSheetHidden;
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :図形のインデックスの取得
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :p_strShapeName - 図形名
        ///
        /// 作成日   :2008年6月5日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :図形のインデックスの取得
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        private int ShapeIndex(string p_strShapeName)
        {
            string temp = p_strShapeName.Substring(4);
            return int.Parse(temp);
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :Excelワークシート
        ///
        /// 返り値   :bool - True - 存在  False - 存在しない
        ///
        /// 引き数   :なし
        ///
        /// 作成日   :2008年6月3日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excelワークシート数の取得処理を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public bool SheetExist(string p_strSheetName)
        {
            foreach (Excel.Worksheet objSheet in m_objExcelWorkBook.Worksheets)
            {
                if (objSheet.Name == p_strSheetName)
                {
                    return true;
                }
            }
            return false;
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :図形の削除処理
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :なし
        ///
        /// 作成日   :2008年6月3日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :図形の削除処理を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void DeleteShapes(ArrayList ShapesName)
        {
            foreach (string ShapeName in ShapesName)
            {
                m_objExcelWorkSheet.Shapes.Item(ShapeName).Delete();
            }
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :図形の罫線作成(実線)
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :p_intStartRow - Excelの開始行
        ///           p_intStartColumn - Excelの開始列
        ///           p_intEndRow - Excelの終了行
        ///           p_intEndColumn - Excelの終了列
        ///
        /// 作成日   :2008年6月3日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :図形の罫線作成を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void SetSolidBorder(int p_intStartRow, int p_intStartColumn,
            int p_intEndRow, int p_intEndColumn)
        {
            Excel.Range objRange = GetRange(p_intStartRow, p_intStartColumn,
                p_intEndRow, p_intEndColumn);

            objRange.Borders[Excel.XlBordersIndex.xlDiagonalDown].LineStyle =
                Excel.XlLineStyle.xlLineStyleNone;

            objRange.Borders[Excel.XlBordersIndex.xlDiagonalUp].LineStyle =
                Excel.XlLineStyle.xlLineStyleNone;

            objRange.Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle =
                Excel.XlLineStyle.xlContinuous;

            objRange.Borders[Excel.XlBordersIndex.xlEdgeLeft].Weight =
                Excel.XlBorderWeight.xlMedium;

            objRange.Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle =
               Excel.XlLineStyle.xlContinuous;

            objRange.Borders[Excel.XlBordersIndex.xlEdgeTop].Weight =
                Excel.XlBorderWeight.xlMedium;

            objRange.Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle =
               Excel.XlLineStyle.xlContinuous;

            objRange.Borders[Excel.XlBordersIndex.xlEdgeBottom].Weight =
                Excel.XlBorderWeight.xlMedium;

            objRange.Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle =
               Excel.XlLineStyle.xlContinuous;

            objRange.Borders[Excel.XlBordersIndex.xlEdgeRight].Weight =
                Excel.XlBorderWeight.xlMedium;

            objRange.Borders[Excel.XlBordersIndex.xlInsideHorizontal]
                .LineStyle = Excel.XlLineStyle.xlLineStyleNone;

            objRange.Borders[Excel.XlBordersIndex.xlInsideVertical]
                .LineStyle = Excel.XlLineStyle.xlLineStyleNone;
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :図形の罫線作成(虚線)
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :p_intStartRow - Excelの開始行
        ///           p_intStartColumn - Excelの開始列
        ///           p_intEndRow - Excelの終了行
        ///           p_intEndColumn - Excelの終了列
        ///
        /// 作成日   :2008年6月3日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :図形の罫線作成を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void SetDotBorder(int p_intStartRow, int p_intStartColumn,
            int p_intEndRow, int p_intEndColumn)
        {
            Excel.Range objRange = GetRange(p_intStartRow, p_intStartColumn,
                p_intEndRow, p_intEndColumn);

            objRange.Borders[Excel.XlBordersIndex.xlDiagonalDown].LineStyle =
                Excel.XlLineStyle.xlLineStyleNone;

            objRange.Borders[Excel.XlBordersIndex.xlDiagonalUp].LineStyle =
                Excel.XlLineStyle.xlLineStyleNone;

            objRange.Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle =
                Excel.XlLineStyle.xlDashDot;

            objRange.Borders[Excel.XlBordersIndex.xlEdgeLeft].Weight =
                Excel.XlBorderWeight.xlMedium;

            objRange.Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle =
               Excel.XlLineStyle.xlDashDot;

            objRange.Borders[Excel.XlBordersIndex.xlEdgeTop].Weight =
                Excel.XlBorderWeight.xlMedium;

            objRange.Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle =
               Excel.XlLineStyle.xlDashDot;

            objRange.Borders[Excel.XlBordersIndex.xlEdgeBottom].Weight =
                Excel.XlBorderWeight.xlMedium;

            objRange.Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle =
               Excel.XlLineStyle.xlDashDot;

            objRange.Borders[Excel.XlBordersIndex.xlEdgeRight].Weight =
                Excel.XlBorderWeight.xlMedium;

            objRange.Borders[Excel.XlBordersIndex.xlInsideHorizontal]
                .LineStyle = Excel.XlLineStyle.xlLineStyleNone;

            objRange.Borders[Excel.XlBordersIndex.xlInsideVertical]
                .LineStyle = Excel.XlLineStyle.xlLineStyleNone;
        }

        //--------------------------------------------------------------------------
        ///
        /// 機能     :Excelワークシート名の削除処理
        ///
        /// 返り値   :Excelワークシート名
        ///
        /// 引き数   :なし
        ///
        /// 作成日   :2008年6月3日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :Excelワークシート名の削除処理を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void DeleteWorkSheet(string p_strSheetName)
        {
            Excel.Worksheet objSheet = (Excel.Worksheet)m_objExcelWorkBook.Worksheets[p_strSheetName];
            objSheet.Delete();
        }

        ///--------------------------------------------------------------------------
        ///
        /// 機能     :図形の罫線変更処理
        ///
        /// 返り値   :なし
        ///
        /// 引き数   :なし
        ///
        /// 作成日   :2008年6月3日
        ///
        /// 作成者   :
        ///
        /// 機能説明 :図形の罫線変更処理を行う。
        ///
        /// 注意事項 :なし
        ///
        ///--------------------------------------------------------------------------
        public void ChangeShapeStyle(string p_strShapeName)
        {
            Excel.Shape objShape = m_objExcelWorkSheet.Shapes.Item(p_strShapeName);
            objShape.Line.DashStyle = MsoLineDashStyle.msoLineSquareDot;
        }

        public void ProtectSheet(string p_strSheetName)
        {
            Excel.Worksheet objSheet = (Excel.Worksheet)m_objExcelWorkBook.Sheets[p_strSheetName];
            objSheet.Protect(Type.Missing, false, Type.Missing, false, Type.Missing, Type.Missing,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing);
        }

        public Excel.Font GetCellFont(int nRow, int nColumn)
        {
            Excel.Range objRange =(Excel.Range) m_objExcelWorkSheet.Cells[nRow, nColumn];
            return objRange.Font;
        }

        public Excel.Shapes GetShapes()
        {
            return m_objExcelWorkSheet.Shapes;
        }

        public int GetShapeCount()
        {
            return m_objExcelWorkSheet.Shapes.Count;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/ptrunner/article/details/6120058