繁体   English   中英

如何在**保持自定义货币格式**的同时使用 iTextSharp 将 C# DataGridView 导出为 PDF?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM