Skip to content

dlehd333/GothamSubway

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

109 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

GothamSubway : ์ง€ํ•˜์ฒ  ํ†ต๊ณ„ ํ”„๋กœ๊ทธ๋žจ

๊ฐœ์š”

  • C# .NET Framework์™€ EntityFramework ๋ฐ DevExpress๋ฅผ ์ด์šฉํ•ด ์ง€ํ•˜์ฒ  ๊ด€๋ จ ์ •๋ณด๋ฅผ ์ฐจํŠธ๋กœ ์ถœ๋ ฅํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

๊ฐœ๋ฐœ ๊ธฐ๊ฐ„

  • 2020๋…„ 12์›” 14์ผ ~ 2020๋…„ 12์›” 20์ผ

์ฐธ์—ฌ ์ธ์›

  • IoT๊ธฐ๋ฐ˜ ์Šค๋งˆํŠธํŒฉํ† ๋ฆฌ SW๊ฐœ๋ฐœ ์ „๋ฌธ๊ฐ€๊ณผ์ •
  • ๊น€๋Œ€๊ทผ, ์•ˆ์„ฑ์œค, ์ด๋™ํฌ ์ด 3๋ช…

์ฃผ์š” ๊ธฐ๋Šฅ

์ถœ๋ ฅ ๊ธฐ๋Šฅ

์›”๋ณ„ ์Šนํ•˜์ฐจ ์Šน๊ฐ ์ˆ˜

  • ๋…„๋„๋ณ„, ์—ญ๋ณ„

์„ ํƒ๊ธฐ๊ฐ„ ์Šนํ•˜์ฐจ ์Šน๊ฐ ์ˆ˜

  • ์„ ํƒ๋œ ๊ธฐ๊ฐ„ ๊ธฐ์ค€, ์ผ๋ณ„, ์‹œ๊ฐ„๋ณ„

์ง€ํ•˜์ฒ ์—ญ๋ณ„ ์—ฌ๊ฐ์ˆ˜์ž…

  • ์›”๋ณ„, ์—ญ๋ณ„, ํšŒ์‚ฌ๋ณ„(์นด๋“œํšŒ์‚ฌ)

๋ถ„๋ฅ˜๋ณ„ ๋งŒ์กฑ๋„

  • ๊ตฐ๊ตฌ๋ณ„, ์„ฑ๋ณ„, ์—ฐ๋ น๋ณ„, ํ•™๋ ฅ๋ณ„, ์ง์—…๋ณ„, ์›”ํ‰๊ท ์†Œ๋“๋ณ„

์ง€ํ•˜์ฒ  ์ „์ฒด ์ „๋ ฅ ์‚ฌ์šฉ๋Ÿ‰ ๋ฐ ์ „๊ธฐ์š”๊ธˆ

  • ๋…„๋„๋ณ„

์ž…๋ ฅ ๊ธฐ๋Šฅ

  • Excel(.xls).csv ํŒŒ์ผ DB ์ €์žฅ ๊ธฐ๋Šฅ
  • ํ•ด๋‹น ํ˜•์‹์˜ ํŒŒ์ผ ์„ ํƒ ํ›„ ์„œ๋ฒ„(DB)์— ์ €์žฅ ๊ฐ€๋Šฅ

์‚ฌ์šฉ ๊ธฐ์ˆ 

์–ธ์–ด

  • C# 8.0

ํ”„๋ ˆ์ž„์›Œํฌ

  • .Net FrameWork 4.8
  • EntityFrameWork 6.2
  • Winform

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

  • MSSQL Server 2019

Third Party

  • DevExpress 20.2.3 (Trial Version)

๊ธฐํƒ€ ๊ฐœ๋ฐœํ™˜๊ฒฝ

  • Windows 10
  • Microsoft Visual Studio Community 2019 v16.8
  • Microsoft SQL Server Management Studio v18.6

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ

์Šคํ‚ค๋งˆ

  • ๋ชจ๋“  ํ•ญ๋ชฉ์ด ์ œ 3 ์ •๊ทœํ™”๊นŒ์ง€ ์™„๋ฃŒ๋๋‹ค

์œ ์ € ์ผ€์ด์Šค ๋‹ค์ด์–ด๊ทธ๋žจ

์œ ์ €์ผ€์ด์Šค ๋‹ค์ด์–ด๊ทธ๋žจ

ํ”Œ๋กœ์šฐ์ฐจํŠธ

๊ณ ๊ฐ์šฉ ๋‹ค์ด์–ด๊ทธ๋žจ

ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ

DAO(Data Access Object)

dao

์‹œํ€ธ์Šค ๋‹ค์ด์–ด๊ทธ๋žจ

์—ฌ๊ฐ ์ˆ˜์ž… ์‹œํ€ธ์Šค

์‹œํ€€์Šค

Point of Interest

TablePanel ์‚ฌ์šฉ๋ฒ•์— ๊ด€ํ•œ ์ด์Šˆ #31

์ฆ์ƒ(๋ฌธ์ œ)

  • TablePanel์„ ์‚ฌ์šฉํ•ด Form์˜ ๊ณต๊ฐ„ํ• ๋‹น์ด ์›ํ•˜๋Š” ๋Œ€๋กœ ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ

์›์ธ

  • DevExpress์˜ TablePanel์„ ์‚ฌ์šฉํ•ด Form์˜ ๊ณต๊ฐ„ ํ• ๋‹น์„ ํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ, ํ•ด๋‹น ํŒจ๋„์— ์ปจํŠธ๋กค์„ ๋„ฃ์œผ๋ฉด ๋ฌด์กฐ๊ฑด ์™ผ์ชฝ ์œ„๋กœ ๊ฐ•์ œ ์ •๋ ฌ๋˜๊ณ  ์ด๋™์ด ์•ˆ๋œ๋‹ค.
  • Anchor๋ฅผ ํ•ด์ œํ•ด ๋ดค์ง€๋งŒ ์™ผ์ชฝ ์œ„์—์„œ ์™ผ์ชฝ ๊ฐ€์šด๋ฐ๋กœ ๋ฐ”๋€Œ์—ˆ์„ ๋ฟ, ์ด๋™์ด ์•ˆ๋œ๋‹ค.

๊ฒฐ๊ณผ(ํ•ด๊ฒฐ๋ฐฉ์•ˆ)

  • DevExpress์˜ ๋ฉ”๋‰ด์–ผ์„ ํ†ตํ•ด ๋‚ด๊ฐ€ TableLayoutPanel์„ ์ž˜๋ชป ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์Œ์„ ์•Œ์•˜๋‹ค. ๋ฉ”๋‰ด์–ผ๋งํฌ
  • TableLayout ์ž์ฒด๊ฐ€ ๋‹จ์ˆœํžˆ ํŒจ๋„์„ ์—ฌ๋Ÿฌ๊ฐœ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์—‘์…€์ฒ˜๋Ÿผ ํŒจ๋„์„ ์…€ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„๊ณ  ์ปจํŠธ๋กค์„ ์…€์˜ ์ผ์ • ๋ถ€๋ถ„(nํ–‰ n์—ด)์— ๋„ฃ๋Š” ๋ฐฉ์‹์ด์—ˆ๋‹ค.
  • ๋ฉ”๋‰ด์–ผ์˜ ์˜ˆ์ œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์„ธ์„ธํ•˜๊ฒŒ ์…€์„ ๋‚˜๋ˆ„๊ณ , ์›ํ•˜๋Š” ๋ถ€๋ถ„์— ์ปจํŠธ๋กค์„ ๋„ฃ์–ด ์…€์„ ํ• ๋‹นํ•ด์ฃผ์—ˆ๋‹ค
  • ๊ฒฐ๊ณผ์ ์œผ๋กœ ์›ํ•˜๋Š” ํ˜•ํƒœ์˜ ๋ ˆ์ด์•„์›ƒ์„ ์™„์„ฑํ–ˆ๋‹ค

์ฐธ๊ณ ํ•  ์ฝ”๋“œ๋‚˜ ์Šคํฌ๋ฆฐ์ƒท

์ด๋ฏธ์ง€


์„œ๋กœ ๋‹ค๋ฅธ ์ˆซ์ž ํ˜•์‹๊ฐ„์˜ ๋‚˜๋ˆ—์…ˆ์— ๊ด€ํ•œ ์ด์Šˆ #37

์ฆ์ƒ(๋ฌธ์ œ)

  • ์ฆ๊ฐ๋ฅ ์„ ๊ณ„์‚ฐํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ, ๊ณ„์‚ฐ๋œ ๋ฐ์ดํ„ฐ์— ๊ณ„์† 0์ด ์ถœ๋ ฅ๋˜๋Š” ๋ฌธ์ œ

์›์ธ

  • ์ฆ๊ฐ๋ฅ  ๊ณ„์‚ฐ์„ ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์„ค์ •ํ•œ ๋‹ค์Œ, ์ „๊ธฐ ์‚ฌ์šฉ๋Ÿ‰๊ณผ ์š”๊ธˆ์˜ ์ฆ๊ฐ๋ฅ ์„ ๊ณ„์‚ฐํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ, ์ฆ๊ฐ๋ฅ ์— ๊ณ„์†ํ•ด์„œ 0์ด ์ž…๋ ฅ๋˜์—ˆ๋‹ค.
  • ๋‹จ๊ณ„๋ณ„ ๋””๋ฒ„๊น…์„ ํ†ตํ•ด ํ™•์ธํ•ด๋ณด๋ ค ํ•˜์˜€์œผ๋‚˜, ์ค‘๋‹จ์ ์„ ์ž˜๋ชป ์ฐ์–ด ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์•„๋ณด์ง€ ๋ชปํ–ˆ๋‹ค.

๊ฒฐ๊ณผ

  • ๋‚˜๋ˆ—์…ˆ์„ ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ์ˆซ์ž๊ฐ€ ๋ชจ๋‘ intํ˜•์ด๋ฉด ๊ฒฐ๊ณผ๊ฐ’์ด intํ˜•์ด ์ถœ๋ ฅ๋˜์–ด ์†Œ์ˆ˜์ ์ด ์ฆ๋ฐœํ•œ๋‹ค(ex. 10/3.7 = 2)
  • ๋‚˜๋ˆ—์…ˆ์— ์‚ฌ์šฉ๋˜๋Š” ์ˆซ์ž ์ค‘ ์ตœ์†Œ 1๊ฐœ๋ฅผ doubleํ˜•์œผ๋กœ ์บ์ŠคํŒ…ํ•ด์•ผ ํ•œ๋‹ค.
  • ๋‚˜๋ˆ„๋Š” ๋ณ€์ˆ˜๋ฅผ doubleํ˜•์œผ๋กœ ์บ์ŠคํŒ… ํ•˜์—ฌ ํ•ด๊ฒฐํ•˜์˜€๋‹ค.

์ฐธ๊ณ ํ•  ์ฝ”๋“œ๋‚˜ ์Šคํฌ๋ฆฐ์ƒท

items[i].UsageYoYRate = (items[i].Usage - previousItem.Usage) / previousItem.Usage * 100.0;
items[i].UsageYoYRate = (items[i].Bill - previousItem.Usage) / (double)previousItem.Usage * 100.0;

์ง€ํ•˜์ฒ  ๋…ธ์„ ๋„ ๋ฒ„ํŠผ ์ „๋‹ฌ ๊ฐ’ ๋ณ€๊ฒฝ ์‹œ ๊ฐ’ ์ „๋‹ฌ์ด ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ #40

์ฆ์ƒ(๋ฌธ์ œ)

  • ์ง€ํ•˜์ฒ  ๋…ธ์„ ๋„ ๋ฒ„ํŠผ ์ „๋‹ฌ ๊ฐ’ ๋ณ€๊ฒฝ ์‹œ ๊ฐ’ ์ „๋‹ฌ์ด ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ

์›์ธ

  • TransferByMonthForm๋‚ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์œ ์ € ์ปจํŠธ๋กค์˜ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ํ• ๋‹น๋˜์–ด ์žˆ์ง€ ์•Š์•˜์Œ.
  • ๊ธฐ์กด์— ํ• ๋‹น๋˜์–ด ์žˆ์—ˆ์œผ๋‚˜ ๋‚ด์šฉ์ด ์™œ ์ดˆ๊ธฐํ™” ๋˜์–ด ์žˆ๋Š”์ง€ ์›์ธ์„ ์•Œ์•„๋‚ด์ง€ ๋ชปํ•จ.
  • ๋””์ž์ธ ์ฝ”๋“œ์˜ ๋‚ด์šฉ์ด ์ž๋™์œผ๋กœ ๊ณ„์† ๋ณ€๊ฒฝ๋˜๋ฉด์„œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ๋ˆ„๋ฝ๋œ ๊ฒƒ์œผ๋กœ ์ถ”์ฒญ๋จ.

๊ฒฐ๊ณผ(ํ•ด๊ฒฐ๋ฐฉ์•ˆ)

  • ํผ ์ฝ”๋“œ์— ์ง์ ‘ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋“ฑ๋กํ•˜์—ฌ ํ•ด๊ฒฐํ•จ

์ฐธ๊ณ ํ•  ์ฝ”๋“œ๋‚˜ ์Šคํฌ๋ฆฐ์ƒท

//Codes from TransferByMonthForm.cs
protected override void OnLoad(EventArgs e) // ํผ ๋กœ๋“œ ์‹œ ์ด๋ฒคํŠธ
{
    base.OnLoad(e);

    gothamMapControl.ButtonClicked +=
        new EventHandler<GothamMapControl1.ButtonClickedEventArgs>(gothamMapControl_ButtonClicked);//๋งต์ปจํŠธ๋กค ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ• ๋‹น
}

๋งŒ์กฑ๋„ ํŽ˜์ด์ง€ ๋™์  ์ฐจํŠธ ๊ตฌ์„ฑ์— ๊ด€ํ•œ ๋ฌธ์ œ #44

์ฆ์ƒ(๋ฌธ์ œ)

  • ์ž‘์—…ํ•ด์•ผ ํ•  ๋งŒ์กฑ๋„ ํŽ˜์ด์ง€๋Š” ์—ฌ๊ฐ์ˆ˜์ž… ํŽ˜์ด์ง€์™€ ๋‹ค๋ฅด๊ฒŒ, ์นดํ…Œ๊ณ ๋ฆฌ์— ๋”ฐ๋ผ ์ถœ๋ ฅํ•  ์‹œ๋ฆฌ์ฆˆ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋ฐ”๋€Œ๋Š” ๋ฌธ์ œ

์›์ธ

  • ์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด Entity์˜ ๋ชจ๋ธํ™” ๋ฐ ๋™์  ์‹œ๋ฆฌ์ฆˆ ์ƒ์„ฑ ๋“ฑ ๊ฑฐ์ณ์•ผ ํ•  ๊ณผ์ •์ด ๋‚œํ•ดํ–ˆ๋‹ค
  • ์ฐจํŠธ๊ฐ€ ์ต์ˆ™ํ•˜์ง€ ์•Š์•„์„œ ์ฐจํŠธ(์‹œ๋ฆฌ์ฆˆ) ๊ตฌ์„ฑ์—๋„ ์• ๋ฅผ ๋จน์—ˆ๋‹ค

๊ฒฐ๊ณผ(ํ•ด๊ฒฐ๋ฐฉ์•ˆ)

  • ์ˆ˜๋™์œผ๋กœ ์‹œ๋ฆฌ์ฆˆ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹ ๋Œ€์‹  ๋ฐ์ดํ„ฐ์— ๋งž๊ฒŒ ์ž๋™์œผ๋กœ ์‹œ๋ฆฌ์ฆˆ๋ฅผ ์ƒ์„ฑํ•˜๋Š” SeriesTemplate ์†์„ฑ์„ ๋ฐœ๊ฒฌํ•˜์—ฌ ์‚ฌ์šฉํ–ˆ๋‹ค
  • SeriesTemplate ์†์„ฑ์˜ ํ•˜์œ„ ์†์„ฑ์ธ FilterCriteria(FilterString)์—์„œ Or ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์›ํ•˜๋Š” ์นดํ…Œ๊ณ ๋ฆฌ์— ๋งž๊ฒŒ ๋™์ ์œผ๋กœ ์‹œ๋ฆฌ์ฆˆ๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค
  • ์ด๋ฅผ ์ด์šฉํ•ด ๋ชจ๋ธํ™” ์‹œ์ผœ ๋ฐ”์ธ๋”ฉํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•„ํ„ฐ๋งํ•˜์—ฌ ์นดํ…Œ๊ณ ๋ฆฌ ๋ฐ ์—ฐ๋„์— ๋งž๋Š” ๊ฐœ๋ณ„ ์‹œ๋ฆฌ์ฆˆ๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์ถœ๋ ฅ๋˜๋„๋ก ํ•˜๋Š” ๋ฐ ์„ฑ๊ณตํ–ˆ๋‹ค

์ฐธ๊ณ ํ•  ์ฝ”๋“œ๋‚˜ ์Šคํฌ๋ฆฐ์ƒท

์ด๋ฏธ์ง€ ์ด๋ฏธ์ง€


DevExpress ๋ฒ„์ „์ด ๋งž์ง€ ์•Š๋Š” ๋ฌธ์ œ #49

์ฆ์ƒ(๋ฌธ์ œ)

  • ์ถ”๊ฐ€ ์ž‘์—…์„ ์œ„ํ•ด ๋‹ค๋ฅธ ํ™˜๊ฒฝ์—์„œ ์ž‘์—…์‹œ ํ”„๋กœ์ ํŠธ๊ฐ€ DevExpress๋ฅผ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ

์›์ธ

  • 1์ฐจ ์›์ธ์€ DevExpress๊ฐ€ 12์›”4์ผ์— 20.2.4๋กœ ์—…๋ฐ์ดํŠธ ๋˜๋ฉด์„œ ๊ธฐ์กด์— ์ž‘์—…ํ•˜๋˜ ๋ฒ„์ „๊ณผ ๋งž์ง€ ์•Š์•„ ์ƒ๊ธด ๋ฌธ์ œ์˜€๋‹ค
  • 2์ฐจ๋กœ ๋‹ค๋ฅธ ํŒ€์›์ด ์ด๋ฏธ ๋ฌธ์ œ ์ธ์‹ ์ „๋‚  ๋ฐค์— DevExpress ๋ฒ„์ „์„ ๋ฐ”๊ฟ”์„œ ์ž‘์—…์„ ํ•˜๊ณ  master์— Mergeํ–ˆ๋‹ค
  • ๊ทธ๋กœ ์ธํ•ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ๋ฒ„์ „์ด ๋งž์ง€ ์•Š์•„ ํ”„๋กœ์ ํŠธ์˜ ์ผ๊ด€์„ฑ์„ ์นจํ•ด๋‹นํ•˜๊ณ  ์ž‘์—…์ด ์–ด๋ ค์›Œ์ง€๊ฒŒ ๋˜์—ˆ๋‹ค

๊ฒฐ๊ณผ(ํ•ด๊ฒฐ๋ฐฉ์•ˆ)

  • ์ฒ˜์Œ์—๋Š” ๋ฒ„์ „ ์ •๋ณด๊ฐ€ ์ ํžŒ licenses.licx ํŒŒ์ผ ๋ฐ .csproj ํŒŒ์ผ์˜ ๋ฒ„์ „ ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•˜์˜€์ง€๋งŒ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค
  • ๊ทธ๋ž˜์„œ ๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋˜ ๋ฒ„์ „(20.2.3)์— ๋งž๋Š” ์„ค์น˜ํŒŒ์ผ์„ ๊ตฌํ•ด DevExpress๋ฅผ ์žฌ์„ค์น˜ํ•˜๊ณ , DevExpress์—์„œ ์ œ๊ณตํ•˜๋Š” Project Converter๋ฅผ ์ด์šฉํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ด์ „ ๋ฒ„์ „์œผ๋กœ ๋‹ค์‹œ Convertํ•˜์—ฌ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค
  • ํ•˜์ง€๋งŒ ๊ทธ๋ž˜๋„ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์‚ฌ๋žŒ์ด ์ƒ๊ฒจ, ํ•ด๋‹น ์ธ์›์€ ๋กœ์ปฌ์˜ ๋‚ด์šฉ์„ ์‚ญ์ œํ•˜๊ณ  Github์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์‹œ ๋ณต์ œํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค

์ฐธ๊ณ ํ•  ์ฝ”๋“œ๋‚˜ ์Šคํฌ๋ฆฐ์ƒท

์ด๋ฏธ์ง€ ์ด๋ฏธ์ง€


๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค์— Excel ํ”„๋กœ๊ทธ๋žจ์ด ๋‚จ๋Š” ๋ฌธ์ œ #56

์ฆ์ƒ(๋ฌธ์ œ)

  • ์—‘์…€ ํŒŒ์ผ ์ฝ๊ธฐ ์ž‘์—… ์ง„ํ–‰ ์ค‘ ๋น„์ •์ƒ ์ข…๋ฃŒ์‹œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค์— Excel์ด ๋‚จ์•„์žˆ๋Š” ๋ฌธ์ œ

์›์ธ

  • ImportForm์—์„œ ์—‘์…€ ํŒŒ์ผ์„ ์ฝ์–ด์˜ฌ ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜, ์ž‘์—… ์ค‘๊ฐ„์— ์ข…๋ฃŒํ•˜๋ฉด ์œˆ๋„์šฐ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค์— Excel์ด ๋‚จ์•„์žˆ๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค
  • ๊ทธ๋ž˜์„œ ์—‘์…€ ํŒŒ์ผ์˜ ์ž„์‹œ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚จ์•„์žˆ๊ฑฐ๋‚˜, ์ปดํ“จํ„ฐ๋ฅผ ๊ป๋‹ค ์ผœ๋ฉด ํ”„๋กœ์„ธ์Šค์— ๋‚จ์•„์žˆ๋˜ ์—‘์…€์ด ์‹คํ–‰๋˜๋Š” ๋“ฑ์˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค

๊ฒฐ๊ณผ(ํ•ด๊ฒฐ๋ฐฉ์•ˆ)

  • ์—‘์…€ ํŒŒ์ผ์„ ์ฝ์–ด์˜ค๋Š” ์ค‘์—๋Š” ์ข…๋ฃŒ๊ฐ€ ๋˜์ง€ ์•Š๋„๋ก ๋ง‰๊ณ , ์ž‘์—… ์ค‘์ง€ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•จ.
  • ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์ž‘์—…์ด ์ค‘์ง€๋  ๊ฒฝ์šฐ ์—‘์…€ ํŒŒ์ผ์„ ์—ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ํ•ด์ œํ•ด ์ฃผ๋„๋ก ์กฐ์น˜ํ•จ.

์ฐธ๊ณ ํ•  ์ฝ”๋“œ๋‚˜ ์Šคํฌ๋ฆฐ์ƒท

// ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ ์‹œ
protected override void OnClosing(CancelEventArgs e)
{
    _pause.Reset(); // ManualResetEvent ์“ฐ๋ ˆ๋“œ๋กœ ์ž‘์—…์„ ์ผ์‹œ ์ •์ง€
    if (bgwLoader.IsBusy || bgwInsert.IsBusy) // ์ž‘์—…์ค‘์—๋Š” ์ข…๋ฃŒ ์ทจ์†Œ
    {
        Utility.Mbox("๊ฒฝ๊ณ ", "์ž‘์—…์ด ์ง„ํ–‰์ค‘์ž…๋‹ˆ๋‹ค.\n์ข…๋ฃŒํ•˜์‹œ๋ ค๋ฉด ์ž‘์—…์„ ์™„๋ฃŒํ•˜์‹œ๊ฑฐ๋‚˜ ์ค‘์ง€ํ•ด ์ฃผ์„ธ์š”");
        e.Cancel = true;
    }
    _pause.Set();
    base.OnClosing(e);
}
// BackgroundWorker์˜ ์ž‘์—…์ด ๋๋‚ฌ์„ ๋•Œ(์˜ค๋ฅ˜ ๋ฐœ์ƒ ๋ฐ ์ทจ์†Œ)
private void bgwLoader_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
    if (e.Error != null || e.Cancelled == true)
    {
        ReleaseObject(range);
        ReleaseObject(worksheet);
        ReleaseObject(workbook);
        application.Quit();
        ReleaseObject(application);
        return;
    }
    // ....
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages