반응형

* 폴더 및 파일, 드라이브 목록 및 사이즈 구하기 예제

 

메인 화면

File Open 버튼 : 파일 대화 상자가 뜨게 되며, 해당 파일 선택 시 위 그림과 같이 파일의 위치 와 사이즈가

                      표시 됩니다. 다만 사이즈 표시는 기본 Byte 로 리턴 되며 이것을 KB 또는 MB 로 바꾸기

                      위한 작업을 필요 하다면 해줄 필요가 있습니다.

                      Ex) 위 그림에서 파일 사이즈를 변환 해 본다면...

                      1024 로 한번 나누게 되면 KB -> 10722 KB

                      KB 용량을 다시 1024 로 나누게 되면 10.4 MB 가 되겠습니다.

 

파일 대화 상자

 

Folder Open 버튼 : 폴더 대화 상자가 뜨게 되며, 해당 폴더 선택 시 메인화면을 보듯이 폴더의 위치 와 사이즈가

                          표시 됩니다. 다만 사이즈 표시는 기본 Byte 로 리턴 되며 이것을 KB 또는 MB 로 바꾸기

                          위한 작업을 필요 하다면 해줄 필요가 있습니다.

                          File Open에서 설명 햇듯이 1024 한번 나누면 KB 두번 나누면 MB 로 변환 됨.

 

폴더 대화 상자

Form1.vb

 

Imports System.IO

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        lvMain.Items.Clear()

        '드라이브 구하기
        Dim dList() As DriveInfo = DriveInfo.GetDrives()

        For iCount As Integer = 0 To dList.Length - 1
            Try
                Dim lvi As ListViewItem = New ListViewItem()
                lvi.Text = dList(iCount).Name.ToString() + " 드라이브"
                lvi.SubItems.Add(dList(iCount).TotalSize.ToString())
                lvi.SubItems.Add(dList(iCount).TotalFreeSpace.ToString())

                lvMain.Items.Add(lvi)
            Catch ex As Exception

            End Try
        Next

    End Sub

    Private Function FileSize(ByVal strPath As String) As Long
        '파일 경로가 없다면
        If (strPath = "") Then Return 0

        Dim fi As FileInfo = New FileInfo(strPath)
        If (fi Is Nothing) Then Return 0

        Return fi.Length
    End Function

    Private Function FolderSize(ByVal d As DirectoryInfo) As Long

        Dim lSize As Long = 0

        '파일 사이즈
        Dim fsize() As FileInfo = d.GetFiles()

        For iCount As Integer = 0 To fsize.Count() - 1
            lSize += fsize(iCount).Length
        Next


        '하위 디렉토리 사이즈
        Dim dSize() As DirectoryInfo = d.GetDirectories()
        For iCount As Integer = 0 To dSize.Count() - 1
            lSize += FolderSize(dSize(iCount))
        Next

        Return lSize

    End Function


    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        'File Open
        Dim ofd As OpenFileDialog = New OpenFileDialog()

        '파일 열기
        If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then
            lblFilePath.Text = ofd.FileName
            lblSize.Text = FileSize(ofd.FileName).ToString()
            '
            '위 소스를 풀면
            'Dim l as Long = FileSize(ofd.FileName)
            'lblSize.Text = l.ToString()   으로 됨.
        End If

    End Sub

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
        'Folder Open
        Dim fbd As FolderBrowserDialog = New FolderBrowserDialog()

        If fbd.ShowDialog() = Windows.Forms.DialogResult.OK Then
            lblFolderPath.Text = fbd.SelectedPath
            lblFolderSize.Text = FolderSize(New DirectoryInfo(fbd.SelectedPath)).ToString()
            '
            '위 소스를 풀면
            'Dim d as DirectoryInfo = new DirectoryInfo(fbd.SelectedPath)
            'Dim l as Long = FolderSize(d)
            'lblFolderSize.Text = l.ToString() 으로 됨.
            '
        End If


    End Sub
End Class

 

* 위 소스에 보면 FolderSize => 마지막 구문은 재귀호출하여 하위 디렉토리가 있으면 들어가서

파일 사이즈 를 리턴 하게 됩니다.

 

함수 안에서 함수 자기자신을 호출하는 방식을 재귀호출이라고 합니다.

이러한 형태의 구문을 가지고 있는 함수를 재귀 함수라고 불리기도 합니다.

[C#] 폴더 및 파일, 드라이브 사이즈 (Size) 구하기

 

[C#] 폴더 및 파일, 드라이브 사이즈 (Size) 구하기

* 폴더 및 파일, 드라이브 목록 및 사이즈 구하기 예제 File Open 버튼 : 파일 대화 상자가 뜨게 되며, 해당 파일 선택 시 위 그림과 같이 파일의 위치 와 사이즈가 표시 됩니다. 다만 사이즈 표시는 기본 Byte..

kdsoft-zeros.tistory.com

 

반응형
반응형

* 폴더 및 파일, 드라이브 목록 및 사이즈 구하기 예제

 

메인 화면

File Open 버튼 : 파일 대화 상자가 뜨게 되며, 해당 파일 선택 시 위 그림과 같이 파일의 위치 와 사이즈가

                      표시 됩니다. 다만 사이즈 표시는 기본 Byte 로 리턴 되며 이것을 KB 또는 MB 로 바꾸기

                      위한 작업을 필요 하다면 해줄 필요가 있습니다.

                      Ex) 위 그림에서 파일 사이즈를 변환 해 본다면...

                          1024 로 한번 나누게 되면 KB -> 10722 KB

                          KB 용량을 다시 1024 로 나누게 되면 10.4 MB 가 되겠습니다.

                      

파일 대화 상자

Folder Open 버튼 : 폴더 대화 상자가 뜨게 되며, 해당 폴더 선택 시 메인화면을 보듯이 폴더의 위치 와 사이즈가

                          표시 됩니다. 다만 사이즈 표시는 기본 Byte 로 리턴 되며 이것을 KB 또는 MB 로 바꾸기

                          위한 작업을 필요 하다면 해줄 필요가 있습니다.

                          File Open에서 설명 햇듯이 1024 한번 나누면 KB 두번 나누면 MB 로 변환 됨.

 

폴더 대화 상자

 

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 System.IO;

namespace CSharp_FFSize
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();

            //드라이브 구하기...
            DriveInfo[] dList = DriveInfo.GetDrives();

            for (int iCount = 0; iCount < dList.Length; iCount++)
            {
                //에러 나는 아이템은 추가 X ...
                try
                {
                    //드라이브 목록 및 이름, 사이즈...
                    ListViewItem lvi = new ListViewItem();
                    lvi.Text = dList[iCount].Name.ToString() + " 드라이브";
                    lvi.SubItems.Add(dList[iCount].TotalSize.ToString());
                    lvi.SubItems.Add(dList[iCount].TotalFreeSpace.ToString());

                    lvMain.Items.Add(lvi);
                }
                catch { }
            }

        }

        private void button1_Click(object sender, EventArgs e)
        {
            //File Open
            OpenFileDialog ofd = new OpenFileDialog();

            //파일 열기...
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                lblFilePath.Text = ofd.FileName;
                lblSize.Text = FileSize(ofd.FileName).ToString();
                /*
                 * 위 소스를 풀어서 하면은...
                 * 
                 * long lFileSize = FileSize(ofd.FileName);
                 * lblSize.Text = lFileSize.ToString();
                 * 
                 * 이렇게 구현 해도 무방 함.
                 */
            }

        }

        private void button2_Click(object sender, EventArgs e)
        {
            //Folder Open
            FolderBrowserDialog fbd = new FolderBrowserDialog();

            if (fbd.ShowDialog() == DialogResult.OK)
            {
                lblFolderPath.Text = fbd.SelectedPath ;
                lblFolderSize.Text = FolderSize(new DirectoryInfo (fbd.SelectedPath)).ToString();
                /*
                 * 위 소스를 풀어서 하면은...
                 * 
                 * DirectoryInfo d = new DirectoryInfo(fbd.SelectedPath);
                 * long lSize = FolderSize(d);
                 * lblFolderSize.Text = lSize.ToString();
                 * 
                 * 이렇게 구현 해도 무방 함.
                 */
            }
        }

        private long FileSize(string strPath)
        {
            if (strPath == "") return 0;
            FileInfo fi = new FileInfo(strPath);
            if (fi == null) return 0;
            return fi.Length;
        }

        private long FolderSize(DirectoryInfo d)
        {
            long size = 0;
            // 파일 사이즈.
            FileInfo[] fis = d.GetFiles();
            foreach (FileInfo fi in fis)
            {
                size += fi.Length;
            }
            // 하위 디렉토리 사이즈.
            DirectoryInfo[] dis = d.GetDirectories();
            foreach (DirectoryInfo di in dis)
            {
                size += FolderSize(di);
            }
            return size;
        }

        

    }
}

 

* 위 소스에 보면 FolderSize => 마지막 구문은 재귀호출하여 하위 디렉토리가 있으면 들어가서

                                         파일 사이즈 를 리턴 하게 됩니다.

 

함수 안에서 함수 자기자신을 호출하는 방식을 재귀호출이라고 합니다.

이러한 형태의 구문을 가지고 있는 함수를 재귀 함수라고 불리기도 합니다.

반응형
반응형

* 윈도우 레지스트리를 이용 하여 윈도우 시작 시 프로그램 자동 실행을 만들어 보겠습니다.

 

메인화면

메인화면

윈도우 시작 버튼을 클릭 하면 아래의 이미지와 같이 레지스트리에 등록 된 것을 확인 할 수 있습니다.

-> 시작 -> 실행 -> regedit 를 입력 하여 레지스트리 에디터에 접근 할 수 있음.

 

윈도우 삭제 버튼은 등록된 레지스트리를 삭제 하는 기능.

 

 

Form1.vb

 

Imports Microsoft.Win32

Public Class Form1

    Dim strAppName As String = "TestWindowsStart"

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        '레지스트리에 등록...
        Using rk As RegistryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True)
            Try
                '레지스트리에 등록 되어 있는게 없으면...
                If rk.GetValue(strAppName) Is Nothing Then

                    '등록될 이름과 파일 위치 등록...
                    rk.SetValue(strAppName, Application.ExecutablePath.ToString())

                End If

                '오픈된 레지스트리 닫기...
                rk.Close()

            Catch ex As Exception

                MessageBox.Show("오류: " + ex.Message.ToString())

            End Try

            txtMsg.Text += strAppName + " 프로그램을 레지스트리에 등록 하였습니다." + System.Environment.NewLine

        End Using


    End Sub

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
        '레지스트리에서 삭제...
        Using rk As RegistryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True)
            Try
                '레지스트리에 등록 되어 있는게 있으면...
                If Not rk.GetValue(strAppName) Is Nothing Then

                    '레지스트리에 등록된 이름이 있으면 삭제...
                    rk.DeleteValue(strAppName, False)

                End If

                '오픈된 레지스트리 닫기...
                rk.Close()

            Catch ex As Exception

                MessageBox.Show("오류: " + ex.Message.ToString())

            End Try

            txtMsg.Text += strAppName + " 프로그램을 레지스트리에 삭제 하였습니다." + System.Environment.NewLine

        End Using
    End Sub
End Class

* 예제 결과 화면

 

결과 화면

 

[VBNET] 레지스트리(Registry) Create & Delete & Read & Write

 

[VBNET] 레지스트리(Registry) Create & Delete & Read & Write

* 윈도우 레지스트리에 읽고 쓰고 만들고 지우기 예제 Form1.vb Imports Microsoft.Win32 Public Class Form1 Dim strAppName As String = "RegistryTest" Private Sub Form1_Load(ByVal sender As System.Object..

kdsoft-zeros.tistory.com

[C#] 레지스트리(Registry) Create , Read, Write, Delete

 

[C#] 레지스트리(Registry) Create , Read, Write, Delete

* 윈도우 레지스트리에 읽고 쓰고 만들고 지우기 예제 Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text;..

kdsoft-zeros.tistory.com

[C#] 레지스트리를 이용 윈도우 시작 시 프로그램 자동 실행

 

[C#] 레지스트리를 이용 윈도우 시작 시 프로그램 자동 실행

* 윈도우 레지스트리를 이용 하여 윈도우 시작 시 프로그램 자동 실행을 만들어 보겠습니다. 윈도우 시작 버튼을 클릭 하면 아래의 이미지와 같이 레지스트리에 등록 된 것을 확인 할 수 있습니다. -> 시작 -> 실..

kdsoft-zeros.tistory.com

 

반응형
반응형

* 윈도우 레지스트리를 이용 하여 윈도우 시작 시 프로그램 자동 실행을 만들어 보겠습니다.

 

메인화면

윈도우 시작 버튼을 클릭 하면 아래의 이미지와 같이 레지스트리에 등록 된 것을 확인 할 수 있습니다.

-> 시작 -> 실행 -> regedit 를 입력 하여 레지스트리 에디터에 접근 할 수 있음.

윈도우 삭제 버튼은 등록된 레지스트리를 삭제 하는 기능.

 

 

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 Microsoft.Win32;

namespace CSharp_WindowsStart_Program
{
    public partial class Form1 : Form
    {
        string strAppName = "TestWindowsStart";

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            using (RegistryKey rk = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true))
            {
                try
                {
                    //레지스트리 등록...
                    if (rk.GetValue(strAppName) == null)
                    {
                        rk.SetValue(strAppName, Application.ExecutablePath.ToString());
                    }

                    //레지스트리 닫기...
                    rk.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("오류: " + ex.Message.ToString());
                }

                txtMsg.Text += strAppName + " 프로그램을 레지스트리에 등록 하였습니다." + System.Environment.NewLine ;
            }


        }

        private void button2_Click(object sender, EventArgs e)
        {
            using (RegistryKey rk = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true))
            {

                try
                {
                    //레지스트리 삭제
                    if (rk.GetValue(strAppName) != null)
                    {
                        rk.DeleteValue(strAppName, false);
                    }


                    //레지스트리 닫기...
                    rk.Close();
                }
                catch(Exception ex)
                {
                    MessageBox.Show("오류: " + ex.Message.ToString());
                }

                txtMsg.Text += strAppName + " 프로그램을 레지스트리에 삭제 하였습니다." + System.Environment.NewLine;
            }

        }
    }
}

 

* 예제 결과 화면

 

결과 화면

 

[C#] 레지스트리(Registry) Create , Read, Write, Delete

 

[C#] 레지스트리(Registry) Create , Read, Write, Delete

* 윈도우 레지스트리에 읽고 쓰고 만들고 지우기 예제 Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text;..

kdsoft-zeros.tistory.com

[VBNET] 레지스트리(Registry) Create & Delete & Read & Write

 

[VBNET] 레지스트리(Registry) Create & Delete & Read & Write

* 윈도우 레지스트리에 읽고 쓰고 만들고 지우기 예제 Form1.vb Imports Microsoft.Win32 Public Class Form1 Dim strAppName As String = "RegistryTest" Private Sub Form1_Load(ByVal sender As System.Object..

kdsoft-zeros.tistory.com

 

반응형
반응형

* VBNET 엑셀 파일 예제...

 - 참조 추가

 

참조 추가 화면

 

메인 화면

 

소스 구현을 하기에 앞서 미리 엑셀 파일을 열어 D:\통합 문서.xls 로 샘플로 하나 저장 해 놓았습니다.

샘플로 파일 하나 만들고 위치는 어디에 있던 상관 없습니다.

 

Form1.vb

 

Imports Microsoft.Office.Interop.Excel
Imports Microsoft.Office.Interop
Imports System.IO

Public Class Form1

    '엑셀 사용을 위한 변수...
    Dim ExcelApp As Excel.Application = Nothing
    Dim wb As Excel.Workbook = Nothing
    Dim ws As Excel.Worksheet = Nothing

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        'Excel Write

        '원본 파일이 없다면...
        If Not File.Exists("D:\통합 문서.xls") Then
            Return
        End If

        '파일이 있다면 삭제하고...
        If File.Exists("C:\Test.xls") Then
            File.Delete("C:\Test.xls")
        End If

        Try
            ExcelApp = New Excel.Application()
            'wb = ExcelApp.Workbooks.Add("Test") => 엑셀 파일 만들 때 새로운 워크북 추가 
            '엑셀 파일 오픈...
            wb = ExcelApp.Workbooks.Open("D:\통합 문서.xls")
            ws = CType(wb.Worksheets("Sheet1"), Excel.Worksheet)

            '시트 -> 셀에 데이터 삽입 부분
            ws.Cells(1, 1) = "1"
            ws.Cells(1, 2) = "12"
            ws.Cells(1, 3) = "123"
            ws.Cells(1, 4) = "1234"

            '폼 화면에 디스플레이...
            textBox1.Text += "A1: 1" + System.Environment.NewLine
            textBox1.Text += "A2: 12" + System.Environment.NewLine
            textBox1.Text += "A3: 123" + System.Environment.NewLine
            textBox1.Text += "A4: 1234" + System.Environment.NewLine
            textBox1.Text += "===========================" + System.Environment.NewLine
            textBox1.Text += "Excel File Write..." + System.Environment.NewLine
            textBox1.Text += "===========================" + System.Environment.NewLine


            '파일 닫기... 
            '다른이름으로 저장하기...
            wb.SaveAs("C:\Test.xls")
            wb.Saved = True
            wb.Close(False, Excel.XlFileFormat.xlWorkbookNormal)
            ExcelApp.Quit()

        Catch ex As Exception
            '객체 메모리 해제...
            ReleaseObject(ws)
            ReleaseObject(wb)
            ReleaseObject(ExcelApp)
            GC.Collect()
        Finally
            '객체 메모리 해제...
            ReleaseObject(ws)
            ReleaseObject(wb)
            ReleaseObject(ExcelApp)
            GC.Collect()
        End Try

    End Sub

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
        'Excel Read

        '파일이 존재 하지 않는다면...
        If Not File.Exists("C:\Test.xls") Then
            Return
        End If

        Try
            ExcelApp = New Excel.Application()
            '엑셀 파일 오픈...
            wb = ExcelApp.Workbooks.Open("C:\Test.xls")
            ws = CType(wb.Worksheets("Sheet1"), Excel.Worksheet)

            '시트 -> 셀 값 얻어 오기...
            Dim rg As Excel.Range = CType(ws.Cells(1, 1), Excel.Range)
            Dim rg2 As Excel.Range = CType(ws.Cells(1, 2), Excel.Range)
            Dim rg3 As Excel.Range = CType(ws.Cells(1, 3), Excel.Range)
            Dim rg4 As Excel.Range = CType(ws.Cells(1, 4), Excel.Range)


            textBox1.Text += "A1: " + rg.Value2.ToString() + System.Environment.NewLine
            textBox1.Text += "A2: " + rg2.Value2.ToString() + System.Environment.NewLine
            textBox1.Text += "A3: " + rg3.Value2.ToString() + System.Environment.NewLine
            textBox1.Text += "A4: " + rg4.Value2.ToString() + System.Environment.NewLine
            textBox1.Text += "===========================" + System.Environment.NewLine
            textBox1.Text += "Excel File Read..." + System.Environment.NewLine
            textBox1.Text += "===========================" + System.Environment.NewLine

            '파일 닫기... 
            wb.Close(False, Excel.XlFileFormat.xlWorkbookNormal)
            ExcelApp.Quit()

        Catch ex As Exception
            '객체 메모리 해제...
            ReleaseObject(ws)
            ReleaseObject(wb)
            ReleaseObject(ExcelApp)
            GC.Collect()
        Finally
            '객체 메모리 해제...
            ReleaseObject(ws)
            ReleaseObject(wb)
            ReleaseObject(ExcelApp)
            GC.Collect()
        End Try


    End Sub

    Private Sub ReleaseObject(ByVal obj As Object)

        Try
            If Not obj Is Nothing Then
                Runtime.InteropServices.Marshal.ReleaseComObject(obj)
                obj = Nothing
            End If
        Catch
            obj = Nothing
        Finally
            GC.Collect()
        End Try

    End Sub


End Class

 

* 예제 결과 화면

 

결과 화면

https://kdsoft-zeros.tistory.com/136

 

[VBNET] Excel File Print (엑셀 파일 프린트)

* VBNET Excel File Print (엑셀 파일 프린트) 예제... - 인쇄할 엑셀 파일 추가 하기... (Excel File 추가하는 것은 C# 과 VBNET 이 다를게 없으므로 기존 C# 에 작성된 그림을 가져옴) 프로젝트 클릭 -> 마우..

kdsoft-zeros.tistory.com

[C#] Excel File Write & Read 예제...

 

[C#] Excel File Write & Read 예제...

* 엑셀 파일 쓰고 읽기 예제... 위 그림과 같이 프로젝트에 참조를 추가 해 줍니다. 참조가 추가 되었으면 이제 메인화면을 만들어 봅니다. 소스 구현을 하기에 앞서 미리 엑셀 파일을 열어 D:\통합 문서.xls..

kdsoft-zeros.tistory.com

 

[VBNET] File Create Delete Read Write Ex

 

[VBNET] File Create Delete Read Write Ex

* VBNET 파일 예제 Form1.vb Public Class Form1 Dim strCheckFolder As String = "" Dim strFileName As String = "Test.txt" Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventA..

kdsoft-zeros.tistory.com

 

 

반응형
반응형

* 엑셀 파일 쓰고 읽기 예제...

 

위 그림과 같이 프로젝트에 참조를 추가 해 줍니다.

 

참조가 추가 되었으면 이제 메인화면을 만들어 봅니다.

 

메인화면

소스 구현을 하기에 앞서 미리 엑셀 파일을 열어 D:\통합 문서.xls 로 샘플로 하나 저장 해 놓았습니다.

샘플로 파일 하나 만들고 위치는 어디에 있던 상관 없습니다.

 

Form.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using Excel = Microsoft.Office.Interop.Excel;
using System.IO;

namespace CSharp_ExcelFile
{
    public partial class Form1 : Form
    {
        Excel.Application ExcelApp = null;
        Excel.Workbook wb = null;
        Excel.Worksheet ws = null;

        public Form1()
        {
            InitializeComponent();
        }
        private void button2_Click(object sender, EventArgs e)
        {
            //Read

            //파일이 없다면...
            if (!File.Exists("C:\\Test.xls"))
            {
                textBox1.Text += "파일이 존재 하지 않습니다." + System.Environment.NewLine;
                return;
            }

            try
            {
                ExcelApp = new Excel.Application();
                wb = ExcelApp.Workbooks.Open("C:\\Test.xls",
                                              0,
                                              true,
                                              5,
                                              "",
                                              "",
                                              true,
                                              Excel.XlPlatform.xlWindows,
                                              "\t",
                                              false,
                                              false,
                                              0,
                                              true,
                                              1,
                                              0);
                ws = wb.Worksheets["Sheet1"] as Excel.Worksheet;
                
                Excel.Range rg = ws.Cells[1, 1] as Excel.Range ;
                Excel.Range rg2 = ws.Cells[1, 2] as Excel.Range;
                Excel.Range rg3 = ws.Cells[1, 3] as Excel.Range;
                Excel.Range rg4 = ws.Cells[1, 4] as Excel.Range;

                //범위 지정... 
                Excel.Range rgTest = ws.get_Range("A1", "A4");
                System.Array ayTest = (System.Array)rgTest.Cells.Value2 ;
                string[] strArray = ConvertToStringArray(ayTest);


                //텍스트 박스에 디스플레이...
                textBox1.Text += "A1: " + rg.Value2.ToString() + System.Environment.NewLine;
                textBox1.Text += "A2: " + rg2.Value2.ToString() + System.Environment.NewLine;
                textBox1.Text += "A3: " + rg3.Value2.ToString() + System.Environment.NewLine;
                textBox1.Text += "A4: " + rg4.Value2.ToString() + System.Environment.NewLine;
                textBox1.Text += "===========================" + System.Environment.NewLine;
                textBox1.Text += "Excel File Read..." + System.Environment.NewLine; ;
                textBox1.Text += "===========================" + System.Environment.NewLine;

                //범위 결과 표시...
                for (int iCount = 0; iCount < strArray.Length; iCount++)
                {
                    //범위 테스트
                    textBox1.Text += "A"+ (iCount+1).ToString()  +": " + strArray[iCount] + System.Environment.NewLine;
                }

                //파일 닫기... 
                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 button1_Click(object sender, EventArgs e)
        {
            //Write

            //파일이 존재 한다면..삭제 하고..
            if (File.Exists("C:\\Test.xls"))
            {
                File.Delete("C:\\Test.xls");
            }

            try
            {
               
                ExcelApp = new Excel.Application();
                wb = ExcelApp.Workbooks.Open("D:\\통합 문서.xls", 
                                              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[1, 1] = "1";
                ws.Cells[1, 2] = "12";
                ws.Cells[1, 3] = "123";
                ws.Cells[1, 4] = "1234";

                ws.Cells[2, 1] = "Test1"; //A2
                ws.Cells[3, 1] = "Test12"; //A3
                ws.Cells[4, 1] = "Test123"; //A4

                //포뮬러 셋팅하기
                //Excel.Range rg = ws.Cells[1,1] as Excel.Range;
                //rg.Formula = "=SUM($A$1:$A$100)";
                //string strTmp = rg.Formula.ToString();


                //텍스트 박스에 디스플레이...
                textBox1.Text += "A1: 1"  + System.Environment.NewLine ;
                textBox1.Text += "A2: 12"  + System.Environment.NewLine;
                textBox1.Text += "A3: 123"  + System.Environment.NewLine;
                textBox1.Text += "A4: 1234"  + System.Environment.NewLine;
                textBox1.Text += "===========================" + System.Environment.NewLine;
                textBox1.Text += "Excel File Write..." + System.Environment.NewLine; ;
                textBox1.Text += "===========================" + System.Environment.NewLine;

                //다른 이름으로 저장하기...
                //wb.Save(); // => 오픈한 파일 그대로 저장...
                wb.SaveAs("C:\\Test.xls", 
                          Excel.XlFileFormat.xlWorkbookNormal, 
                          Type.Missing , 
                          Type.Missing, 
                          Type.Missing, 
                          Type.Missing, 
                          Excel.XlSaveAsAccessMode.xlNoChange,
                          Type.Missing,
                          Type.Missing,
                          Type.Missing,
                          Type.Missing,
                          Type.Missing);


                //파일 닫기... 
                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();
            }
        }

        private string[] ConvertToStringArray(System.Array ayValues)
        {

            string[] strArray = new string[ayValues.Length];

            for (int i = 1; i <= ayValues.Length; i++) 
             {
                 if (ayValues.GetValue(i, 1) == null)
                 {
                     strArray[i - 1] = "";
                 }
                 else
                 {
                     strArray[i - 1] = (string)ayValues.GetValue(i, 1).ToString();
                 }
             }
             return strArray;
        }

    }
}

 

* 예제 결과 화면

 

결과 화면

 

[C#] File Create & Delete & Read & Write 예제

 

[C#] File Create & Delete & Read & Write 예제

* C# 파일 예제 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.Wind..

kdsoft-zeros.tistory.com

 

https://kdsoft-zeros.tistory.com/135

 

[C#] Excel File Print (엑셀 파일 프린트 하기)

* C# Excel File Print (엑셀 파일 프린트 하기) 예제... - 인쇄할 엑셀 파일 추가 하기... 프로젝트 클릭 -> 마우스 오른쪽 클릭 -> 추가 -> 기존 항목 선택 위 그림과 같이 모든 파일 선택 합니다. 기본 Visu..

kdsoft-zeros.tistory.com

 

반응형
반응형

* VBNET 파일 예제

 

메인 화면

Form1.vb

 


Public Class Form1
    Dim strCheckFolder As String = ""
    Dim strFileName As String = "Test.txt"

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        strCheckFolder = Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf("\"))
        strCheckFolder += "\TEST"

        'TEST 폴더가 없다면 생성...
        If Not System.IO.Directory.Exists(strCheckFolder) Then
            System.IO.Directory.CreateDirectory(strCheckFolder)
        End If

    End Sub

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        'Create
        Try

            'System.IO 또는 System.Text 를 저 위에 Imports System.IO 나 Imports System.Text 로 선언 해두고 
            'StreamWriter , Encoding 클래스를 이용 해 줘도 됨.
            '파일이 없다면...
            If Not System.IO.File.Exists(strCheckFolder + "\" + strFileName) Then
                Using sw As System.IO.StreamWriter = New System.IO.StreamWriter(strCheckFolder + "\" + _
                                                                                strFileName, _
                                                                                True, _
                                                                                System.Text.Encoding.GetEncoding(949))


                    sw.Write(System.Environment.NewLine)
                    sw.Flush()
                    sw.Close()
                End Using
            End If

            Dim fi As System.IO.FileInfo = New System.IO.FileInfo(strCheckFolder + "\" + strFileName)
            lblCreate.Text = "*Message: " + fi.Name + " 파일을 만들었습니다."

        Catch ex As Exception
            System.Console.WriteLine(ex.Message.ToString())
        End Try

    End Sub

    Private Sub button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button4.Click
        'Delete

        '파일이 있다면...
        If System.IO.File.Exists(strCheckFolder + "\" + strFileName) Then

            System.IO.File.Delete(strCheckFolder + "\" + strFileName)

            Dim fi As System.IO.FileInfo = New System.IO.FileInfo(strCheckFolder + "\" + strFileName)
            lblDelete.Text = "*Message: " + fi.Name + " 파일을 삭제 했습니다."
        Else
            lblDelete.Text = "해당 파일이 없습니다."
        End If

    End Sub

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
        'Read
        Dim strFileName As String = "TEST.ZerosKD"

        '파일이 없다면...
        If Not System.IO.File.Exists(strCheckFolder + "\" + strFileName) Then
            lblRead.Text = "해당 파일이 없습니다. File Read Fail."
            Return
        End If

        Dim strValue() As String = System.IO.File.ReadAllLines(strCheckFolder + "\" + strFileName)

        For iIndex As Integer = 0 To strValue.Length - 1
            'vbCrLf == System.Environment.NewLine 과 같은 기능을 함.
            txtRead.Text += strValue(iIndex) + vbCrLf
        Next

        txtRead.Text += "File Read TEST" + System.Environment.NewLine

        Dim fi As System.IO.FileInfo = New System.IO.FileInfo(strCheckFolder + "\" + strFileName)
        lblRead.Text = "*Message: " + fi.Name + " File Read Complete."

    End Sub

    Private Sub button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button3.Click
        'Write
        Dim strFileName As String = "TEST.ZerosKD"

        Try
            'True : Append 기존 파일이 있을 경우 추가해서 쓴다. False : 기존 파일이 있을 경우 덮어쓴다.
            Using sw As System.IO.StreamWriter = New System.IO.StreamWriter(strCheckFolder + "\" + strFileName, True)
                sw.Write(Date.Now.ToString("yyyy-MM-dd HH:mm:ss") + " => " + "File 예제..." + System.Environment.NewLine)
                sw.Write(Date.Now.ToString("yyyy-MM-dd HH:mm:ss") + " => " + txtWrite.Text + System.Environment.NewLine)
                sw.Write(Date.Now.ToString("yyyy-MM-dd HH:mm:ss") + " => " + "============" + System.Environment.NewLine)
                sw.Write(Date.Now.ToString("yyyy-MM-dd HH:mm:ss") + " => " + "File Write TEST" + System.Environment.NewLine)
                sw.Flush()
                sw.Close()
            End Using

            Dim fi As System.IO.FileInfo = New System.IO.FileInfo(strCheckFolder + "\" + strFileName)
            lblWriteFile.Text = "*Message: " + fi.Name + " File Write Complete."

        Catch ex As Exception
            System.Console.WriteLine(ex.Message.ToString())
        End Try
        


    End Sub


End Class

 

위 소스에서 보시는 거와 같이 파일 저장 시 확장자 명은 사용자가 정의 해서 사용 할 수 있습니다.

또한 VbCrLf == System.Environment.NewLine 과 같은 기능을 함.

 

파일 결과 화면

 

[C#] File Create & Delete & Read & Write 예제

 

[C#] File Create & Delete & Read & Write 예제

* C# 파일 예제 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.Wind..

kdsoft-zeros.tistory.com

 

 

 

반응형
반응형

* INI 파일 예제

 

메인화면

Form1.vb

 

Imports System.Runtime.InteropServices
Imports System.IO
Imports System.Text

Public Class Form1
    
    '빌드되는 폴더 경로 가져오기...
    Dim strCheckFolder As String = Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf("\"))

#Region "INI File...API 선언 및 함수 선언"
    <DllImport("kernel32.dll", SetLastError:=True)> _
    Private Shared Function GetPrivateProfileString(ByVal lpAppName As String, _
                                ByVal lpKeyName As String, _
                                ByVal lpDefault As String, _
                                ByVal lpReturnedString As StringBuilder, _
                                ByVal nSize As Integer, _
                                ByVal lpFileName As String) As Integer
    End Function

    <DllImport("kernel32.dll", SetLastError:=True)> _
    Private Shared Function WritePrivateProfileString(ByVal lpAppName As String, _
                            ByVal lpKeyName As String, _
                            ByVal lpString As String, _
                            ByVal lpFileName As String) As Boolean
    End Function

    Private Function SetINI(ByVal strAppName As String, _
                           ByVal strKey As String, _
                           ByVal strValue As String, _
                           ByVal strFilePath As String) As Boolean
        SetINI = WritePrivateProfileString(strAppName, strKey, strValue, strFilePath)
    End Function
    Private Function GetINI(ByVal strAppName As String, _
                           ByVal strKey As String, _
                           ByVal strValue As String, _
                           ByVal strFilePath As String) As String
        Dim strbTmp As StringBuilder = New StringBuilder(255)

        GetPrivateProfileString(strAppName, strKey, strValue, strbTmp, strbTmp.Capacity, strFilePath)

        GetINI = strbTmp.ToString()

    End Function

    Private Function Create_INIFile(ByVal strPath As String, _
                                   ByVal strFileName As String) As Boolean
        If Dir(strPath & "\" & strFileName) <> "" Then
            Exit Function
        End If

        Try
            Using sw As StreamWriter = New StreamWriter(strPath & "\" & strFileName, False)
                sw.WriteLine(vbCrLf)
                sw.Flush()
                sw.Close()
            End Using
        Catch ex As Exception

            Return False
        End Try

        Return True
    End Function

#End Region


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'INIFile Create
        If Create_INIFile(strCheckFolder, "Test.ini") Then
            Label1.Text = "INIFile Create Complete."
            Label2.Text = "FileName: Test.ini"
        End If

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        'INIFile Read
        Label4.Text = "INIFile Read Complete."
        Label3.Text = "Value: " + GetINI("Test_Info", "Test", "", strCheckFolder + "\Test.ini")
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        'INIFile Write
        If SetINI("Test_Info", "Test", "1231231231", strCheckFolder + "\Test.ini") Then
            Label6.Text = "INIFile Write Complete."
            Label5.Text = "Value: 1231231231"
        End If

    End Sub

End Class

위 예제는 윈도우 API 함수를 이용해 INI 파일을 읽고 쓰기를 해 보았습니다. INI 파일 삭제는

'파일이 있으면...

If File.Exits("파일위치") then

      '파일 삭제 

      File.Delete("파일위치")

End If

이 코드만 있으면 파일이 삭제 가능 합니다.

 

* 예제 결과

 

예제 결과 화면

 

반응형

+ Recent posts