반응형
* C# Excel File Print (엑셀 파일 프린트 하기) 예제...
- 인쇄할 엑셀 파일 추가 하기...
프로젝트 클릭 -> 마우스 오른쪽 클릭 -> 추가 -> 기존 항목 선택
위 그림과 같이 모든 파일 선택 합니다. 기본 Visual C# 파일만 열리게 되어 있는데 모든 파일을 선택 하여 프로젝트에 인쇄할 엑셀 파일을 추가 해 줍니다.
예제를 위해 만들어 둔 엑셀 파일을 프로젝트에 추가 해서 위 그림과 같이 출력 디렉터리로 복사 => 항상 복사
로 두면 빌드 시 Print.xls 파일도 같이 따라 오게 됩니다. 혹 참조에 추가된 DLL 파일 또한 출력 디렉터리로 복사를
항상 복사로 해 두시면 빌드 시 해당 DLL 파일도 같이 EXE 파일이 만들어 지는 곳으로 따라 오게 됩니다.
전체 소스 코드
Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
using System.IO;
namespace CSharp_ExcelFilePrint
{
public partial class Form1 : Form
{
//빌드 후 EXE 파일이 생성 되는 곳
string strLocalPath = Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf('\\'));
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Excel.Application ExcelApp = null;
Excel.Workbook wb = null;
Excel.Worksheet ws = null;
//빌드 후 EXE 파일이 만들어 지는 곳에 있는 Print.xls 엑셀 파일
string strExcelFile = strLocalPath + "\\Print.xls";
//파일이 없다면...
if (!File.Exists(strExcelFile))
{
return;
}
try
{
ExcelApp = new Excel.Application();
//해당 엑셀 파일 열기...
wb = ExcelApp.Workbooks.Open(strExcelFile,
0,
true,
5,
"",
"",
true,
Excel.XlPlatform.xlWindows,
"\t",
false,
false,
0,
true,
1,
0);
ws = wb.Worksheets["Sheet1"] as Excel.Worksheet;
//엑셀 시트 인덱스 번호는 0,0 부터 시작 하는 것이 아니라 1,1 A1 부터 시작 함. 0,0 으로 시작하면 오류...
//시트에 값 쓰기...
ws.Cells[3, 3] = "12345"; //번호
ws.Cells[3, 7] = "테스트"; //이름
ws.Cells[6, 2] = DateTime.Now.ToString("yyyy-MM-dd"); //날짜
ws.Cells[6, 6] = DateTime.Now.ToString("HH:mm:ss"); //시간
ws.Cells[10, 2] = "항목1";
ws.Cells[11, 2] = "항목2";
ws.Cells[12, 2] = "항목3";
ws.Cells[13, 2] = "항목4";
ws.Cells[14, 2] = "항목5";
//엑셀 내용 프린트 미리보기...
ExcelApp.Visible = true;
ExcelApp.Sheets.PrintPreview(true);
//파일 닫기...
wb.Close(false, Type.Missing, Type.Missing);
wb = null;
ExcelApp.Quit();
}
catch (Exception ex)
{
//객체들 메모리 해제
ReleaseExcelObject(ws);
ReleaseExcelObject(wb);
ReleaseExcelObject(ExcelApp);
GC.Collect();
}
finally
{
//객체들 메모리 해제
ReleaseExcelObject(ws);
ReleaseExcelObject(wb);
ReleaseExcelObject(ExcelApp);
GC.Collect();
}
}
private void ReleaseExcelObject(object obj)
{
try
{
if (obj != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
}
}
catch (Exception ex)
{
obj = null;
throw ex;
}
finally
{
GC.Collect();
}
}
}
}
* 예제 실행 결과
위 그림 처럼 기본 프린터로 연결됨.
https://kdsoft-zeros.tistory.com/35
반응형
'C# Programming' 카테고리의 다른 글
[C#] [API] 해당 윈도우 폼(Window Form) 을 찾아서 최상위 윈도우로 포커스(Focus) 맞추기 (0) | 2020.02.10 |
---|---|
[C#] 윈도우 폼 (Window Form) 포커스 (Focus) 가 가지 않게 하기 (0) | 2020.02.07 |
[C#] 아스키 코드 표 (Ascii Code) (0) | 2020.02.03 |
[C#] [WMI] 현재 실행 중인 프로세스 조회 (Process Search) (0) | 2020.01.30 |
[C#] [WMI] 윈도우 시작 프로그램 조회 (Startup Program) (0) | 2020.01.28 |