2017-01-11 8 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()); 
関連する問題