에서 Excel 작업 템플리 - 라이브러리없는 (※ 필요 Excel)

15743 단어 ExcelC#

1. 컴파일용 배치



※Office의 버젼에 의존하므로, 적절히 변경해 주세요.

compile.bat

csc ^
 /r:C:\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Excel\15.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll ^
 /r:C:\Windows\assembly\GAC_MSIL\office\15.0.0.0__71e9bce111e9429c\Office.dll ^
 %*

1-1. 컴파일 방법


compile.bat ほげほげ.cs

2. 현재 열려있는 Excel 파일의 활성 시트를 조작하는 템플릿



・화면 갱신 정지
・재계산 정지

2-1. 소스 코드



※열려 있는 엑셀 시트에 대해서 처리를 실시하므로, 함부로 실행하지 말아 주세요.

using System;
using System.Runtime.CompilerServices; // to use [MethodImpl(MethodImplOptions.NoInlining)]
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;

class ExcelSample
{
    [MethodImpl(MethodImplOptions.NoInlining)] // 最適化抑制
    static void OverwriteActiveSheet()
    {
        Excel.Application oExcelApp = null;
        Excel.Worksheet oSheet = null;

        try {
            oExcelApp = (Excel.Application)Marshal.GetActiveObject("Excel.Application");
        }
        catch ( System.Runtime.InteropServices.COMException ) {
            Console.WriteLine("Failed to get Excel.Application.");
            return;
        }

        try {
            var oBook = (Excel.Workbook)oExcelApp.ActiveWorkbook;
            if ( oBook != null ) {
                oSheet = (Excel.Worksheet)oBook.ActiveSheet;
            }
        }
        catch ( System.Runtime.InteropServices.COMException ) {
        }
        if ( oSheet == null ) {
            Console.WriteLine("Failed to get ActiveWorkbook or ActiveSheet.");
            return;
        }

        bool screenUpdatingBackup = oExcelApp.ScreenUpdating;
        Excel.XlCalculation calcModeBackup = oExcelApp.Calculation;
        try {
            oExcelApp.ScreenUpdating = false; // 画面更新の停止
            oExcelApp.Calculation = Excel.XlCalculation.xlCalculationManual; // 再計算の停止

            // 処理を追加  ここから

            // セルの読み込み
            Excel.Range oCells = oSheet.Cells;
            var oRange = oCells[3, 2] as Excel.Range; // B3セル
            Console.WriteLine(oRange.Value);
            Console.WriteLine(oRange.Value2);
            Console.WriteLine(oRange.Text);

            // セルへの書き込み
            oRange = oCells[4, 3] as Microsoft.Office.Interop.Excel.Range;
            oRange.Value = "hoge";

            // 罫線を引く
            Excel.Borders oBorders;
            Excel.Border oBorder;
            oRange = oSheet.Range[oSheet.Cells[2, 2], oSheet.Cells[4, 4]]; //  select B2 - D4
            oBorders = oRange.Borders;
            oBorder = oBorders[Excel.XlBordersIndex.xlEdgeBottom];// xlEdgeLeft xlEdgeRight xlEdgeTop
            oBorder.LineStyle = Excel.XlLineStyle.xlContinuous;

            // 処理を追加  ここまで
        }
        finally {
            if ( oExcelApp.Calculation != calcModeBackup ) {
                oExcelApp.Calculation = calcModeBackup;
            }
            if ( oExcelApp.ScreenUpdating != screenUpdatingBackup ) {
                oExcelApp.ScreenUpdating = screenUpdatingBackup;
            }
        }
    }

    [STAThread]
    static void Main(string[] args)
    {
        OverwriteActiveSheet();
    }
}

2-2. 입력 데이터





2-3. 실행 결과



2021/02/03 0:00:00
44230
2月3日



3. Excel 파일 열기 - 참고 사이트


  • Excel 파일을 로드하고 셀 내용 보기 : C# | iPentec
  • Workbooks.Open Method (Microsoft.Office.Interop.Excel) | Microsoft Docs

  • 【C#】Excel 조작(기동, 편집 등) | CodeTips 【링크 끊어? ]

  • C #에서 Excel을 조작! 열기, 닫기, 저장 - lisz-works 【링크 끊어? ]

  • 4. 괘선 그리기 - 참고 사이트


  • C # EXCEL 조작 테두리를 당기는 방법 |
  • C #에서 Excel 작업 (PIA 2) | tocsworld

  • 5. 셀 결합 - 참고 사이트



    요약: Range 에 대해 Merge()
  • C #에서 Excel 작업 (PIA 2) | tocsworld

  • 참고 사이트


  • 셀 값 가져 오기 / 설정 | C #에서 EXCEL을로드하고 조작하는 방법 공개 | C # EXCEL 조작 기술.NET
  • C #에서 Excel 작업 (PIA 2) | tocsworld
  • 자치노와 【C#】 Excel을 다룰 때의 템플릿
  • _Application.ScreenUpdating Property (Microsoft.Office.Interop.Excel) | Microsoft Docs
  • Range.Value2 Property (Microsoft.Office.Interop.Excel) | Microsoft Docs
  • C#에서 Excel 작업의 처리 시간을 측정해 보았다 (Microsoft.Office.Interop.Excel) - Qiita
  • COM 오브젝트의 해방의 방법 - C#(라고 할까.NET) - Qiita

  • Microsoft.Office.Interop.Excel을 사용하는 것 이외의 옵션


  • Excel 파일을 C# 및 VB.NET에서 로드하는 "올바른" 방법 - Qiita
  • 좋은 웹페이지 즐겨찾기