본문 바로가기
[C# 엑셀 읽기] Microsoft.Office.Interop.Excel 참조 추가 C#은 많은 장점을 보유한 프로그래밍 언어입니다. 많은 장점 중에서도 유독 빛을 내주는 장점이 하나 있는데 그건 바로 MS의 존재입니다. MS는 많은 윈도우 기반의 솔루션을 내놓는 동시에, 자사 제품 간에 호환이 쉽도록 이런저런 도구들도 많이 배포하고 있습니다. (C# 엑셀 라이브러리도 마찬가지) 이 포스트에서 소개할 Microsoft.Office.Interop.Excel은 C#에서 엑셀 파일을 컨트롤 할 수 있도록 도와주는 일종의 API입니다. 흔히 말하는 Excel Automation이기도 합니다. 이미 많은 블로거 분이 참조 추가하는 방법을 포스팅하셨습니다만, 제가 처음에 이해를 잘 못 하여 별도로 포스팅하게 되었습니다. 엑셀 오토메이션을 응용하는 예제는 많이 있으니 여기선 참조 추가하는 방법만 간.. 2017. 3. 13.
[Crontab] C# Quartz Cron 사용법 - 초 시 분 월 주 달 표현식 C# Quartz 쿼츠나 크론과 관련된 내용은 여기서 다루지 않고 실제 C#에서 사용하기 위한 소스 예제만을 다룹니다. Cron(또는 Crontab)에서 제공하는 표현식은, 시간별, 일별, 주별, 월별인데, 약간의 꼼수(?)를 발휘해 초 간격의 표현식도 만들 수 있습니다. 가장 낮은 단위부터 생성 소스를 소개합니다. C# Quartz 1. 초 간격의 표현식 사용법123456789101112131415// "0/5 * * * * ?"public static string GetEverySecond(int second){ string result = string.Empty; if (second > -1 && second -1 && minute 매일 오후 4,5,6시 try { if (DateTimeChecke.. 2017. 3. 12.
C# Enum string 변환 2가지 방법. ToString, GetNames C# Enum을 string로 변환할 때 두 가지 방법을 이용할 수 있습니다. 하나는 단일 개체를 string 문자열로 변환하는 ToString() 응용 방법이고, 다른 하나는 Enum 전체를 배열로 받는 GetNames()를 응용하는 방법입니다. 이 두 가지 프로그래밍 방법 모두 다루니 참조해 주세요. C# Enum.ToString(). Enum을 문자열로 변환하는 함수입니다. 변환된 string은 Enum의 이름을 표시하며, 해당 문자열은 변수 등에 저장해 유동적으로 사용할 수 있습니다. 예제. 예제를 위해서 C# enum 타입의 열거형을 하나 생성합니다. 반복문에서 인덱스를 증가하며 해당 문자열을 확인해 보겠습니다. 아래 프로그램에서 Priority.Critical의 인덱스는 4입니다. 1 2 3 .. 2017. 3. 10.
c# tcp client server - 쓰레드 소켓 ui 프로그래밍 예제 c# ui thread 소켓 프로그래밍 예제입니다.크로스 스레드 기반이며 c# tcp client server 소스 모두 포함되어 있습니다. 출처 : Visual C# Kicks프로젝트 다운로드 - Cross Thread를 응용한 C# TCP / IP 통신입니다C#에서 교차 스레드 작업(Cross Thread)이란 다른 스레드에서 컴포넌트를 호출하여 사용한다는 의미입니다. .NET 프레임워크 2.0부터 적절한 교차 스레드 작업은 더이상 옵션 수준에 머물지 않고, 프로그래밍 시 요구 사항으로 전환되었기에 중요한 부분입니다. 예를 들어, 별도의 스레드를 현재 작업 중인 폼에서 호출하면 아래와 같은 오류 메세지가 뜹니다. Cross-thread operation not valid: Control 'Form1'.. 2017. 3. 8.
MFC C# 문자열 자르기 비교 - CString String Mid, Left, Right MFC(CString class)에서 Left, Mid, Right를 사용하여 문자열 자르기하는 방법은 아래와 같습니다. MFC (CString) Samples: 12345678910CString somestring = L"ABCDEFG"; somestring.Left(3) == L"ABC" somestring.Mid(2,3) == L"CDE"somestring.Mid (2) == L"CDEFG" somestring.Right(3) == L"EFG" The index starts at 0 (MFC and C#), so nIndex=2 means the 3rd char!cs C#의 Substring()과 비교하면 이렇습니다. 두 언어의 문자열 자르기 비교표입니다. MFC (CString) C# (strin.. 2017. 3. 7.
C# Sealed 클래스는 왜 빠를까? 최적화에 필요한 이유 컴파일러는 낮은 레벨에서 C# sealed 클래스를 micro-optimization 할 수 있습니다. 컴파일 타임에 C# sealed 클래스에 함수를 호출하면 callvirt IL 명령어 대신 IL 명령어를 사용합니다. C# sealed 클래스의 함수는 오버라이드 되지 않음.가상 함수 테이블 검사 과정을 생략.가상 함수 테이블은 조회 시간이 상대적으로 짦음.callvirt 보다 속도에서 유리함. 이렇기에 성능이 조금 좋아집니다. 최적화 중이라면 적용하세요. 즉, 다형성을 잃어버린 클래스라 선언했기에 컴파일러는 여러 검사 과정을 생략합니다. (확장되지 않는 클래스) 예를 들어, non-sealed 클래스에 makeNoise()란 함수가 있을 때, 이 함수의 재정의 여부는 알 수가 없습니다. 함수 재정의 .. 2017. 3. 5.
C# 스레드풀 예제, Thread pool + Action + Using 스레드풀 전체 소스를 소개합니다. 출처는 기억이 안 나는데, 아마도 스택 오버플로우일 겁니다. 프로젝트 압축 파일 C# 쓰레드풀 예제 프로젝트 - 아래는 스레드풀 메인 클래스인데, Action을 이용해 랜덤한 스레드 시작과 종료 코드를 실행합니다. 5번째 라인의 thread pool 클래스에서 실제 스레드 객체도 생성합니다. 1234567891011121314151617181920212223static void Main(string[] args){ using (var pool = new Pool(5)) // size { var random = new Random(); Action randomizer = (index => { Console.WriteLine("{0}: Working on index {1}".. 2017. 3. 3.
C# List RemoveAll 사용법, 리스트 삭제 람다 문법 예제 C# List의 RemoveAll() 함수는 사용자 정의 조건에 맞는 모든 요소를 제거합니다. 123public int RemoveAll( Predicate match)cs 아래 두 개의 예제를 통해 C# List 요소를 제거하는 몇 가지 방법을 소개합니다.리스트 삭제는 개별 요소, 전체 요소, 값으로 지우기 등 여러가지 방법이 있습니다. C# List RemoveAll 첫번째. Remove(), RemoveAt(), RemoveRange(), RemoveAll() + 람다 1234567891011121314151617181920212223List words = new List(); words.Add("A");words.Add("B");words.Add("C");words.Add("D");words.Ad.. 2017. 3. 2.
C# 3DES(Triple des) 암호화 복호화 알고리즘 dll .NET C# 라이브러리는 문자열 암/복호화를 위한 기본 요소를 제공합니다. 암복호화를 위해선 몇 가지 단계가 필요한데, 이 포스트에서는 암복호화 과정에 대한 간단한 루틴을 소개합니다. MD5 해쉬 합계 생성기(MD5 hash sum generator)의 도움을 조금 받아, 실제 암호화를 위해 사용할 3DES(Triple DES)를 사용합니다. 전체 소스 코드는 맨 아래에 있지만, 먼저 구현 순서를 살펴보는 것도 괜찮습니다. 3DES 프로젝트 다운로드 - ◆ 문제점암호화할 문자열 값을 설정한 뒤, 비밀번호(Password 변수의 secret)로 암호화하여 비교적 안전하게 문자열을 보관할 수 있도록 Base64로 인코딩해야 합니다. 12345678910// 메세지 암호화 (복호화 전 단계)string Ms.. 2017. 3. 2.
C# MFC 차이 비교 - part2 (소스 차이 비교) C# MFC 차이 비교 - part2 (소스 차이 비교) C# MFC 차이 비교 A1. MFC - abs 12345int n = ...;int a = abs(n); int n = -2147483648; // 아래처럼 변환UINT u = abs(n);cs C# - Math.Abs 123456int n = ...;int a = Math.Abs(n); int n = -2147483648; // 아래처럼 변환uint u = Math.Abs(n);uint u = unchecked(n - C# MFC 비교 테이블 [링크] C# MFC 차이 비교 - part2 (소스 차이 비교) 2017. 2. 27.
C# MFC 차이 비교 - part 1 (table) (연동에 필요한 정보) C# MFC 차이 비교 - part 1 (table) (연동에 필요한 정보) C# MFC 차이 - A MFC C# abs Math.Abs .AddString(...) .Items.Add(...) AfxMessageBox MessageBox.Show atoi Parse C# MFC 차이 - B MFC C# BOOL 또는 bool Boolean 또는 bool bool Boolean 또는 bool bool BS_PUSHLIKE BYTE byte C# MFC 차이 - C MFC C# CBitmap Bitmap(actually, a GDI+ bitmap) CBrush Brush CDC 또는 CClientDC Graphics ceil Math.Ceiling CenterWindow(CWnd) .StartPositio.. 2017. 2. 27.
C# UI 디자인 예제 3개, 윈폼 스플래쉬 스크린락 스크린샷 C# 윈폼 예제 3개, 스플래쉬, 스크린락, 스크린샷 (Splash, Screen Lock, Shot) 1. Splash Form프로젝트 - 실행파일 - 시각적으로도 다르고, 구현 방식도 당연히 다르죠. 스플래쉬 스크린은 주로 응용 프로그램이 로드되는 동안에 사용자에게 지루함(?)을 줄이기 위한 용도 등으로 쓰입니다. 이런 스크린을 구현하기 위해선 그림자, 투명도, 배경 이미지, 투명함의 정도 등에 대한 API 사용이 요구됩니다. 중요한 API는 UpdateLayeredWindow 입니다. 매우 유용한 API로서, 그림자를 포함한 배경 이미지 등을 표시할 수 있게 돕습니다. 다른 API들도 호출되는데 소개하자면 아래와 같이 정리할 수 있습니다. 123456GetDCGetCompatibleDCRelease.. 2017. 2. 24.