[英]Formatting done on table in C# is not visible in pdf generated using itextsharp
[英]How can I export a C# DataGridView to PDF using iTextSharp while **maintaining the custom currency formatting**?
我正在尝试使用 iTextSharp 将具有自定义货币格式的 DataGridView 导出为 PDF,该格式在运行程序时完美显示在 DataGrid 上,但在我保存后不会出现在 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());
}
}
}
我在这里和其他网站上搜索过类似的问题,但我没有找到任何解决这个特定问题的方法。
那是因为Value
属性采用用于提供格式化文本的实际绑定值。
所以代替
miscTable.AddCell(cell.Value.ToString());
使用格式化值
miscTable.AddCell(cell.FormattedValue.ToString());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.