본문 바로가기
반응형

C#82

c# List 함수 아래 두 Method의 차이는.. Select()... 하나 행(?)만 List형태로 반환한다. Where()는 해당 조건이 맞는 데이터 row 통으로 반환한다. 일반적으로 Where()를 많이 사용할 것 같다. DataTable과 다르기 때문에 참고할 것. var mat = matData.Select(x => x.CocktailNo = m.CocktailNo); var mat = ((List)ViewBag.MatList).Where(x => x.CocktailNo == m.CocktailNo); 2021. 4. 13.
Excel File Export (2) template copy 특정 서식을 반복해서 사용하고, 내용물을 채운다. 위치계산만 잘하면 쉽게 복사된다. Range["D6:G6"], Cells[4, 3])에서 사용하는 좌표(?)가 다르니 주의해야 함. 핵심 소스 private void BtnExcelAll_Click(object sender, RoutedEventArgs e) { try { Excel.Application application = new Excel.Application(); Excel.Workbook workbook = null; Excel.Worksheet worksheet = null; workbook = application.Workbooks.Open(@"C:\work\03.GitHub\dotnet\WPF\WPF_Dev_Sample\WpfSample\.. 2021. 4. 8.
Excel File Export 양식있는 엑셀 파일 읽어들여서, 내용추가. 일부 양식(row or column)을 복사해서 내용추가. Microsoft Excel 16.0 Object Library 참조 추가해야됨. 참고: 오피스가 설치되어 있으면, 따로 설치할 필요는 없으나.. 버전이 다를 수 있음. 오피스가 없으면, nuget에서 받을 수 있다고함. 위 libray는 solution 탐색기> 참조 > 참조추가 > COM항목 밑에 있음. 예제는 WPF로 만들었으나.. 다 쓸 수 있음. using System; using System.Collections.Generic; using System.Windows; using System.Data; using System.Windows.Controls; using Excel = Microso.. 2021. 4. 7.
Entity Framework DB Connection 간단히 테스트 할 수 있는 버전 using System; using System.Collections.Generic; using System.Linq; using System.Data.SqlClient; using System.Data.Entity; using kaishaku.FrameWork.Base; using DTO.Common.Common; using DTO.Common.Cocktail; namespace BIZ.Common.Dac { public class CommonCodeDAO : DacBase { public List COMMON_CODE_LIST(string company, string highCode) { using (var con = new DbContext(@"Data Source=.. 2021. 3. 27.
ADO.net DB Connect ADO.net DB connect using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; using System.Data.Common; using System.Data.SqlClient; using System.Data.SqlTypes; namespace BIZ.Common.Dac { public class ADOConnect { public DataSet GetDataSet(string database, string storeProcedure, Dictionary dicParams ) { string connecting.. 2021. 3. 27.
'No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient'. Make sure the provider is registered in the 'entityFramework' Error messge System.InvalidOperationException: 'No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient'. Make sure the provider is registered in the 'entityFramework' section of the application config file. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.' solution PM> Install-Package EntityFramework 2021. 3. 18.
.net framework를 이용한 SMTP에 파일첨부해서 보내기 .net 프레임워크에서 제공하는 SMTP로 파일 첨부해서 메일 보내기 using (MemoryStream stream = new MemoryStream()) { report.ExportToPdf(stream); byte[] bytes = stream.ToArray(); MailMessage mail = new MailMessage(); SmtpClient SmtpServer = new SmtpClient("Server URL", 587);//587 SSL : 465 string userState = "Send Email"; string msg = GetMailTempleate(); msg = msg.Replace("[name]", ds.Tables[0].Rows[0]["USR_NM"].ToString().. 2019. 1. 9.
$ - 문자열 보간 참고문서https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/tokens/interpolated string name = "Mark"; var date = DateTime.Now; // Composite formatting: Console.WriteLine("Hello, {0}! Today is {1}, it's {2:HH:mm} now.", name, date.DayOfWeek, date); // String interpolation: Console.WriteLine($"Hello, {name}! Today is {date.DayOfWeek}, it's {date:HH:mm} now."); // Both calls produce the s.. 2018. 11. 23.
SMTP로 메일 보내기 DevExpress의 Report의 PDF 문서를 MemoryStream으로 받은 다음에 C#의 SMTP를 이용하여 메일로 전송. //using System.Net; //using System.Net.Mail; using (MemoryStream stream = new MemoryStream()) { report.ExportToPdf(stream); byte[] bytes = stream.ToArray(); try { MailMessage mail = new MailMessage(); SmtpClient SmtpServer = new SmtpClient("mail.test.co.kr"); string msg = GetMailTempleate(); msg = msg.Replace("[MailTitle]",.. 2018. 11. 8.
System.Drawing.Color Chart 2018. 3. 15.
DataTable Sort(정렬) DataTable을 간단히 정렬하기 첫번째 방법 DefaultView.Sort 사용하기 아래 소스의 1번처럼 하면된다. 근데.. 이게 안되는 경우가 있는 것 같다. 정확한 이유는 모르겠다. 이것이 안된다면 2번째 방법으로 아래와 같이 DataView를 이용해서 정렬한 다음에 다시 DataTable로 변환하면 된다. //1 ds.Tables[0].DefaultView.Sort = "Path ASC"; //2 DataView dv = new DataView(ds.Tables[0]); dv.Sort = "Path ASC"; DataTable dtSort = dv.ToTable(); newDs.Tables.Add(dtSort); 2018. 2. 13.
CLR에서 60초 동안 COM 컨텍스트 0x179930에서 COM 컨텍스트 0x179b58(으)로 전환하지 못했습니다. CLR에서 60초 동안 COM 컨텍스트 0x179930에서 COM 컨텍스트 0x179b58(으)로 전환하지 못했습니다. 대상 컨텍스트/아파트를 소유하는 스레드가 펌프 대기를 수행하지 않거나, Windows 메시지를 펌프하지 않고 매우 긴 실행 작업을 처리하고 있는 것 같습니다. 이러한 상황은 대개 성능에 부정적인 영향을 주며 응용 프로그램이 응답하지 않거나 시간이 흐름에 따라 메모리 사용이 증가하는 문제로 이어질 수도 있습니다. 이 문제를 방지하려면 모든 STA(Single Threaded Apartment) 스레드가 펌프 대기 기본 형식(예: CoWaitForMultipleHandles)을 사용하고 긴 실행 작업 동안 지속적으로 메시지를 펌프해야 합니다. 디버그 모드에서만 생기는 오류인듯하다. 위와 같.. 2017. 7. 11.
현재 사용중인 port 조회하기 현재 local pc에서 사용하고 있는 port 정보를 조회한다. open port는 프로그램에 의해서 열려있는 포트(IIS 등) 아래 netstat는 cmd 명령어의 netstat과 동일하다. //using System.Net.NetworkInformation; string str = string.Empty; IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties(); IPEndPoint[] ipEndpoint = ipGlobalProperties.GetActiveTcpListeners(); TcpConnectionInformation[] tcpCon = ipGlobalProperties.GetActiveTcpCo.. 2017. 6. 4.
FTP에 파일 올리기 기본 템플릿은 다음과 같다.다음 소스에서 필요한 부분만 응용을 하면된다. 보통 파일 경로, 파일의 개수등일 것이다. //using System.Net; string ftpPath = "ftp://192.168.18.5/Upload/info/test.txt"; string user = "ftpuser"; string password = "password"; string sendFile = string.Format(@"C:\{0}.txt", DateTime.Today.ToString("yyyyMMdd hh:mm:ss"); FtpWebRequest fwr = (FtpWebRequest)WebRequest.Create(ftpPath); fwr.Method = WebRequestMethods.Ftp.UploadF.. 2017. 6. 4.
'Microsoft.Ace.OleDb.12.0' 공급자는 로컬 컴퓨터에 등록할 수 없습니다. 'Microsoft.Ace.OleDb.12.0' 공급자는 로컬 컴퓨터에 등록할 수 없습니다. 설명: 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 스택 추적을 검토하여 발생한 오류 및 코드에서 오류가 발생한 위치에 대한 자세한 정보를 확인하십시오. 예외 정보: System.InvalidOperationException: 'Microsoft.Ace.OleDb.12.0' 공급자는 로컬 컴퓨터에 등록할 수 없습니다. 다음경로에서 파일을 다운받아서 설치하면 된다. https://www.microsoft.com/ko-kr/download/details.aspx?id=13255 2017. 5. 5.
멀티 모니터 사용시 원하는 모니터에 팝업창 오픈 멀티 모니터 사용시 원하는 모니터에 팝업창 오픈하고 싶을 때 다음 코드를 사용하면 된다. var board = new BoardForm(); Rectangle rect = Screen.AllScreens[cmbMonitor.EditValue.ToInt() - 1].Bounds; board.SetBounds(rect.X, rect.Y, rect.Width, rect.Height); board.StartPosition = FormStartPosition.Manual; board.Show(); 2016. 8. 17.
현재 pc의 실행중인 모니터에 대한 정보를 가져오기 현재 사용중인 PC의 모니터의 정보를 조회한다. 해상도, 주모니터 여부 등등을 알 수 있다. Screen.AllScreens; for (int index = 0; index < Screen.AllScreens.Length; index++) { var screen = Screen.AllScreens[index]; Console.WriteLine("Name: {0}", screen.DeviceName); Console.WriteLine("Bounds: {0}", screen.Bounds); Console.WriteLine("Working Area: {0}", screen.WorkingArea); Console.WriteLine("Primary Screen: {0}", screen.Primary); Conso.. 2016. 8. 2.
날짜 비교(DateTime 날짜 비교) DateTime 타입의 데이터의 비교두 날짜 중 어느것이크며, 같은지 비교하는 코드 int result = DateTime.Compare(dtDatetime1, dtDatetime2); result가 0보다 크면 dtDatetime1번이 크고 result가 0이면 같고 result가 0보다 작으면 dtDatetime2번이 크다. 2016. 7. 19.
c# 새로운 연산자 ?, ?? ?, ?? 연산자 ? 연산자 txtBox.EditValue = dr?["data"]; ->dr["data"]가 null이면 null을 아니면 dr["data"] 값을 넣어준다. ?? 연산자: null 병합 연산자 int? x = null; //int x = 5; int y = x ?? -1; //변수 x가 null이므로 y는 -1이 됨. //만약, 변수 x가 null이 아니면 x의 값이 들어감. https://msdn.microsoft.com/ko-kr/library/dn986595.aspx 2016. 7. 19.
SaveFileDialog 파일 저장 다이얼로그 팝업 Winform에서 파일 다이얼로그 박스 사용하여 파일명, 파일 위치등의 정보를 가져와서 파일을 저장한다. SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.FileName = "file save" + DateTime.Now.ToString("yyyyMMdd") + ".xlsx"; //초기 파일명을 지정할 때 사용한다. saveFileDialog.Filter = "Excel|*.xlsx"; saveFileDialog.Title = "Save an Excel File"; saveFileDialog.ShowDialog(); if(saveFileDialog.FileName != "") { grdList.ExportToXlsx(saveFil.. 2016. 5. 12.
이 컬렉션에는 스키마 http을(를) 가진 주소가 이미 있습니다. 다음과 같은 에러 메세지는 IIS의 [사이트 편집] [바인딩...] 에서 여러개이 사이트 이름으로 등록이 되었을 때 발생한다.WCF서비스는 하나의 이름으로 서비스 되어야 한다는 룰이 있기 때문이다. 그래서 [바인딩...]에 불필요한 것이 있다면 삭제를 해준다.하나만 남겨 놓고 말이다. '/Svc' 응용 프로그램에 서버 오류가 있습니다.-------------------------------------------------------------------------------- 이 컬렉션에는 스키마 http을(를) 가진 주소가 이미 있습니다. 이 컬렉션에서 스키마당 주소는 하나만 존재할 수 있습니다. 매개 변수 이름: item 설명: 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 스택 .. 2016. 3. 10.
Seven Zip(7z) 압축풀기 Seven zip파일 압출 풀기 Seven Zip 압축 에러 Can not load 7-zip library or internal COM error! Message: library is invalid. 위 에러 해결은 http://www.7-zip.org/download.html 사이트 접속하여, 프로그램(7z920.exe)을 다운 받은 후 설치하고 다음 코드를 추가한다. SevenZipExtractor.SetLibraryPath(@"C:\Program Files (x86)\7-Zip\7z.dll"); 7z.dll을 옮겨 오면 설치하지 않아도 된다. 압축 해제 코드 SevenZipExtractor.SetLibraryPath(@"D:\01.Source\SevenZip\7z.dll"); SevenZipExt.. 2016. 3. 4.
특정 확장자의 파일만 조회하기 특정 확장자의 파일만 조회하기 DirectoryInfo directoryInfo1 = new DirectoryInfo(@"D:\05.work\ftpDwg\110670\0004.zip"); System.IO.FileInfo[] files1 = directoryInfo1.GetFiles(); var lst = files1.Where(x => x.Extension.ToString().Equals(".dwg")).ToList(); 2016. 3. 3.
Windows Form을 맨 위에 표시 SmartClient 개발 중에 브라우져를 클릭하면 뒤로 화면이 계속 감춰졌다. 이를 해결하기 위해 찾다보니 Form 속성중에 TopMost 있었다.이 속성을 사용하면 브라우저를 클릭해도 Form 창이 뒤로 사라지지 않는다. public DownloadFrom() { InitializeComponent(); this.TopMost = true;//이놈 tm.Interval = 1 * 1000; tm.Elapsed += new System.Timers.ElapsedEventHandler(tm_Elapsed); tm.Start(); } https://msdn.microsoft.com/ko-kr/library/3saxwsad(v=vs.110).aspx 2016. 2. 18.
전처리 지시문(빌드모드에 따라서 컴파일되는 소스 변경) DB 서버 정보를 app.config에서 설정하려 하였으나... 고객의 요청으로 빌드시 빌드 모드에 따라서 해당하는 소스코드가 빌드 되게하였다. debug로 빌드시 #if의 코드가 실행이되고 release로 빌드시 #else 코드가 실행이된다. #if DEBUG _oracle = new OracleDbAgent("Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=122.21.100.111)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=PSJG)));User ID=dba;Password=dba"); #else _oracle = new OracleDbAgent("Data Source=(DESCRIPTION=(ADDRESS=(PROTOCO.. 2016. 2. 15.
메서드 또는 연산이 구현되지 않았습니다. 메서드 또는 연산이 구현되지 않았습니다.위와 같은 메세지의 에러가 발생하였다. 발t생하는 위치도 아래와 같이 using을 빠져 나오는 곳이었다. try{ using (JS js = new JS()) using (IDS ids = new IDS()) { ..... } // 2016. 2. 4.
linQ Sample LinQ Sample Guid g = new Guid(); var rowC = (from row in dsConnMethod.Tables[0].AsEnumerable() where new Guid((byte[])row.Field("ConnMethodDefUID")) ==g select row ).ToList(); 2016. 2. 3.
error MSB4018: The "GenerateResource" task failed unexpectedly. error MSB4018: The "GenerateResource" task failed unexpectedly.위와 같은 에러메세지는 프로젝트 파일을 TextEditor로 열어서 Project 아래 PropertyGroup에 다음 속성을 넣어준다. true 2016. 2. 1.
코드상 프로그램 실행(Process) 코드상에서 다른 프로그램(word, excel...) 실행 시킬 때 사용한다. 엑셀같은 겨우는 엑셀 실행 파일이 아닌 xxx.xlsx만 주어도 실행이 된다. Arguments는 주지 않아도 된다. using System.Diagnostics; Process process = new Process(); process.StartInfo.FileName = Path.Combine("D:\down\App.exe"); process.StartInfo.Arguments = "argument; process.Start(); 엑셀 파일 등 실행시 Process.Start("D:\down\App.xlsx"); 2016. 1. 26.
메모리 상의 비트맵 이미지 파일로 저장하기 어떤 작자가.. 리소스에 icon 이미지를 넣어놨다.. ㅡㅡ; 다음과 같이 말이다... 이 icon이 필요해 빼는 작업을 해야했는데... 어떻게 빼야할지 난감했다. 일단 변수 하나 만들고 변수로 만들고 바이너리로 파일을 생성하려 하니 안되었다... 아니 내가 못한 거 일 수 있다. ㅜㅜ 방법을 찾던 중 다음 bitmap class에 저장 기능이 있는 것을 발견했고.. 그를 활용해 저장을 하였다. AAABAAMAMDAAAAEAIACoJQAANgAAACAgAAABACAAqBAAAN4lAAAQEAAAAQAgAGgEAACGNgAAKAAAADAA AABgAAAAAQAgAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////AP///wD///8A////AP// /wD///8A////A.. 2016. 1. 21.
반응형