반응형

System.Data.OleDb.OleDbException : 지정되지 않은 오류입니다.

 

 

Microsoft.ACE.OLEDB.12.0 공급자는 로컬 컴퓨터에 등록할 수 없습니다.

 

위 에러 발생 시 아래 Access Database Engine 2010 재배포 가능 패키지를 설치하면 해결된다.

 

아래 링크에서 두개의 파일을 모두 다운로드 한 후 먼저 64비트용을 설치한 후 32비트용을 설치해야 한다.

 

AccessDatabaseEngine_X64.exe 파일은 마우스 더블클릭으로 설치하고

AccessDatabaseEngine.exe 파일은 이미 설치되어 있기 때문에 마우스 더블클릭으로 설치가 안 된다.

이때 CMD 로 들어가 해당 경로로 이동 후  AccessDatabaseEngine.exe /passive 를 입력하면 설치가 된다.

 

Download Microsoft Access Database Engine 2010 재배포 가능 패키지 from Official Microsoft Download Center

 

Download Microsoft Access Database Engine 2010 재배포 가능 패키지 from Official Microsoft Download Center

중요! 아래에서 언어를 선택하면 전체 페이지 내용이 해당 언어로 신속하게 변경됩니다. 독일어스페인어영어이탈리아어일본어중국어(간체)중국어(번체)프랑스어한국어 다운로드 이 다운로드

www.microsoft.com

 

이렇게 했는데도 안 되는 경우가 있다.

이미 설치가 다 되어 있는 경우인데 계속 에러가 나는 경우도 있다.

 

이런 경우 제어판 > 프로그램 제거 및 변경에 들어가서

Microsoft Access database engine 2010 을 찾아보면 두개가 나오는데

각각 마우스 오른쪽 버튼을 눌러 [복구] 를 실행하면 재설치(?)가 진행되고

두 파일 다 복구한 후에는 에러가 사라질 것이다.

 

반응형
반응형
DataTable dt0 = oDataSet.Tables[0];
DataTable dt1 = oDataSet.Tables[1];

dt0.Merge(dt1);    //// 두 DataTable 을 병합
dt0.DefaultView.Sort = "idx desc";    //// DataTable 정렬

 

아주 간단하다.

 

dt0.Merge(dt1); 이면 병합이 되고

 

dt0.DefaultView.Sort = "idx desc";  면 정렬이 된다.

 

 

정렬방식은 쿼리에서 order by 에 적용했던 것과 같다.

 

dt0.DefaultView.Sort = "idx";

 

dt0.DefaultView.Sort = "idx desc, name desc";

 

단, DataSet 으로 불러온 컬럼명으로 정렬해야 한다.

반응형
반응형

엑셀 다운로드 시 한글파일명을 사용하려면 한글이 깨지는 경우가 있다.

 

이럴 경우 아래 부분만 적용하면 된다.

 

Page.Response.AddHeader("Content-Disposition", "attachment;filename=" + Server.UrlPathEncode(file_name));

 

이 부분이 핵심이다.

 

Server.UrlPathEncode(file_name)

 

 

DataGrid oDataGrid = new DataGrid();
oDataGrid.DataSource = oDataTable;
oDataGrid.DataBind();


string file_name = "온라인강의_수강내역_" + DateTime.Now.ToShortDateString() + ".xls";

Page.Response.Buffer = true;

//// 이 부분이 핵심이다.
Page.Response.AddHeader("Content-Disposition", "attachment;filename=" + Server.UrlPathEncode(file_name));

Page.Response.ContentType = "application/vnd.ms-excel";

oDataGrid.EnableViewState = false;

System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);

oDataGrid.RenderControl(hw);
Page.Response.Write(tw.ToString());
Page.Response.End();
oDataGrid.Dispose();

 

반응형
반응형

입력한 날짜가 몇주차인지 구하는 방법이다.

 

DateTime targetDate = DateTime.Parse(txtdate.Value);

System.Globalization.CultureInfo culture = null;

if (culture == null)
{
    culture = System.Globalization.CultureInfo.CurrentCulture;
}

System.Globalization.CalendarWeekRule weekRule = culture.DateTimeFormat.CalendarWeekRule;
DayOfWeek firstDayOfWeek = culture.DateTimeFormat.FirstDayOfWeek;
int WeekOfYear = culture.Calendar.GetWeekOfYear(targetDate, weekRule, firstDayOfWeek);
WeekOfYear = WeekOfYear - 1;

 

각 문화권에 맞게 주차를 구하도록 되어 있다.

반응형
반응형

C# 에서 엑셀변환을 하면 <br> 로 인한 줄바꿈을 할때 한 셀 내에서 줄바꿈이 되지 않고 아래 셀로 줄바꿈이 일어나서

나중에 정렬할 때나 편집을 할 때 골치 아프게 된다.

 

이럴 때 아래와 같이 처리하면 한 셀 안에서 줄바꿈이 된다.

 

------------------------------------------------------

소스 .aspx.cs 파일에서는

.Replace("\n", "<BR style='mso-data-placement: same-cell;'>");

MS-SQL 쿼리에서 직접 줄바꿈을 추가하려면

'<BR>' 대신에 '<BR style="mso-data-placement: same-cell;">' 를 넣으면 됨

------------------------------------------------------

단 해당 셀의 wrap 는 true 여야 한다. (텍스트 줄바꿈 허용)

////oGridView.RowStyle.Wrap = false; //// 한 셀 안에서 줄바꿈을 할 때는 이 옵션을 사용하면 안 됨

반응형
반응형
string name = "올해는 2021년 입니다.";

​

Regex.Replace(name, @"\d", "");

 

결과는 "올해는 년 입니다." 로 나옵니다.

반응형

+ Recent posts