2017-01-11 1 views
2

iTextSharp를 사용하여 사용자 지정 통화 서식이있는 DataGridView를 PDF로 내보내려고 할 때 프로그램을 실행할 때 서식이 DataGrid에 완벽하게 표시되지만 일단 저장하면 PDF에 나타나지 않습니다. 여기 ** 사용자 지정 통화 서식 **을 유지하는 동안 iTextSharp를 사용하여 C# DataGridView를 PDF로 내보내려면 어떻게해야합니까?

는 (통화 서식을 보여주는)을 DataGridView에 코드입니다 :

DataTable t = new DataTable(); 

      if (t != null) 
      { 
       a.Fill(t); 

       //Custom currency formatting 
       var format =    (NumberFormatInfo)NumberFormatInfo.CurrentInfo.Clone(); 
       format.CurrencySymbol = "R"; 

       dgvMiscEntries.AutoGenerateColumns = false; 

       dgvMiscEntries.ColumnCount = 2; 
       //Assign column headers manually 

       dgvMiscEntries.Columns[0].Name = "Description"; 
       dgvMiscEntries.Columns[0].HeaderText = "Description"; 
       dgvMiscEntries.Columns[0].DataPropertyName = "Description"; 

       dgvMiscEntries.Columns[1].Name = "Rate"; 
       dgvMiscEntries.Columns[1].HeaderText = "Rate"; 
       dgvMiscEntries.Columns[1].DataPropertyName = "Rate"; 
       dgvMiscEntries.Columns[1].DefaultCellStyle.FormatProvider =  format; 
       dgvMiscEntries.Columns[1].DefaultCellStyle.Format = "c"; 


       // Render data onto grid 
       dgvMiscEntries.DataSource = t; 
      } 

그리고 여기 iTextSharp 코드 :

  //Creating iTextSharp Misc Entries Table from the DataTable data 
      PdfPTable miscTable = new PdfPTable(dgvMiscEntries.ColumnCount); 
      miscTable.DefaultCell.Padding = 3; 
      float[] miscWidthPosit = new float[] { 1000f, 200f }; 
      miscTable.WidthPercentage = 80; 
      miscTable.SetWidths(miscWidthPosit); 
      miscTable.HorizontalAlignment = Element.ALIGN_CENTER; 
      miscTable.DefaultCell.BorderWidth = 1; 
      miscTable.SpacingBefore = 10; 
      miscTable.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT; 

      foreach (DataGridViewRow row in dgvMiscEntries.Rows) 
      { 
       foreach (DataGridViewCell cell in row.Cells) 
       { 
        if (cell.Value != null) 
        { 
         miscTable.AddCell(cell.Value.ToString()); 
        } 
       } 
      } 

내가 여기에 비슷한 질문 및 다른 사이트하지만 난에 수색 이 특정 문제를 해결하지 못했습니다.

답변

1

그 이유는 Value 속성이 형식이 지정된 텍스트를 제공하는 데 사용되는 실제 바인딩 값을 사용하기 때문입니다.

그래서 대신

miscTable.AddCell(cell.Value.ToString()); 

사용 FormattedValue

miscTable.AddCell(cell.FormattedValue.ToString());