저는 C#을 사용하여 GridView 및 BoundFields를 사용하여 Excel 파일을 프로그래밍 방식으로 생성합니다. 지금은 특정 값을 순수 텍스트로 유지하는 것이 아니라 날짜로 변환합니다.Excel에서 텍스트를 날짜로 변환하지 않도록 GridView BoundField 서식 지정
Excel에서 변환하지 않고 DB에서 반환 된 상태로 유지하고 싶습니다. 몇 가지 옵션을 살펴 보았지만이 전환을 해결할 수는 없습니다.
이것은 직접 파일로 연결됩니다.
문제가있는 BoundField는 "ReportNumber"입니다. 모두가 제공 할 수있는 도움에 감사드립니다.
코드 조각 :
[HttpGet]
public ActionResult AFDOJClosed2Excel(byte[] Data, string Reporting_Year)
{
try
{
DataTable dt = GetAFDOJClosed(Reporting_Year);//your datatable
DataView dv = dt.DefaultView;
dv.Sort = "Case_Number ASC";
DataTable sortedDT = dv.ToTable();
dt = sortedDT;
GridView excel = new GridView();
excel.DataSource = dt;
excel.AutoGenerateColumns = false;
//Explicitly Create bound fields
BoundField CaseNumber = new BoundField();
CaseNumber.HeaderText = "Case Number";
CaseNumber.DataField = "Case_Number";
excel.Columns.Add(CaseNumber);
BoundField Docket = new BoundField();
Docket.HeaderText = "Docket";
Docket.DataField = "Docket";
excel.Columns.Add(Docket);
BoundField AgencyName = new BoundField();
AgencyName.HeaderText = "Agency Name";
AgencyName.DataField = "Agency_Name";
excel.Columns.Add(AgencyName);
BoundField ReportNumber = new BoundField();
ReportNumber.HeaderText = "Report Number";
ReportNumber.DataField = "Report_Number";
excel.Columns.Add(ReportNumber);
BoundField ClosedDate = new BoundField();
ClosedDate.HeaderText = "Closed Date";
ClosedDate.DataField = "Closed_Date";
ClosedDate.DataFormatString = "{0:d}";
excel.Columns.Add(ClosedDate);
BoundField TotalDisbursed = new BoundField();
TotalDisbursed.HeaderText = "Total Disbursed";
TotalDisbursed.DataField = "Total_Disbursed";
TotalDisbursed.DataFormatString = "{0:C}";
excel.Columns.Add(TotalDisbursed);
excel.DataBind();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment; filename=AFDOJClosed" + Reporting_Year + ".xls");
Response.ContentType = "application/ms-excel";
Response.Charset = "";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
excel.RenderControl(htw);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
return null;
}
catch (Exception ex)
{
ViewBag.ErrorMessage = ex.Message.ToString();
return View("Error");
}
}
답장을 보내 주셔서 감사합니다. 이 예에서 서식을 추가하는 것은 괜찮습니다. 그 정반대의 문제는 제가 원하지 않을 때 포맷팅하는 것입니다. 나는 EPPlus 제안을 시도 할 것이다. –
@J 그랜트 나는 당신이 그것을 포맷하고 싶지는 않지만 코드에서 의도 한 데이터 포맷을 결정할 수 없다는 것을 알게되었다. 샘플은 Excel이 결정하지 않고 원하는 형식으로 설정할 수 있음을 보여줍니다. – DiskJunky
난 그냥 혼자 있기를 바랐다. 그것은 3 자리에 대시가있는 숫자의 문자열이다. Excel은 "0"으로 시작하는 값만 변환합니다. 7 월 7 일을 해석하기 때문에 나는 그것을 안다. 통찰력에 감사드립니다. 나에게는 그저 평범한 텍스트 형식을 나타낼 수 없다는 것이 이상하다. 또는 "스위치를 누르지 마십시오"라고 말하기위한 스위치 –