使用Designer时,我可以将单元格的XlsxFormatString属性编辑为"#,## 0.00"结果如预期。当我尝试以编程方式执行此操作时,没有任何更改:
private XRTableCell CreateCell(int width, string text, bool haveColor, string color, bool isBold, DevExpress.XtraPrinting.BorderSide border, bool IsNumeric)
{
//MyWorkaround
if (IsNumeric)
{
if (text.Contains(","))
{
if (text.Length > text.IndexOf(',') + 3)
text = text.Remove(text.IndexOf(',') + 3);
}
}
//MyWorkaround end
XRTableCell cell = CreateCell(width, text, haveColor, color, isBold);
cell.Borders = border;
if (IsNumeric)
cell.XlsxFormatString = "#,##0.00";
return cell;
}
有任何建议使它成为正确的吗?
答案 0 :(得分:2)
在对Devexpress Documents进行一些研究之后,经过几十次尝试,我得出了这个解决方案;
如果输出不会用于某些计算:
XtraReport myReport = new XtraReport();
myReport.ExportOptions.Xls.TextExportMode = TextExportMode.Text;
myReport.ExportOptions.Xlsx.TextExportMode = TextExportMode.Text;
如果输出单元格类型由于某种原因而重要:
float myTextValue;
if (float.TryParse(textToPrint,out myValue))
{
string decSeperator = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
if (text.Contains(decSeperator))
{
if (textToPrint.Length > textToPrint.IndexOf(decSeperator[0]) + 3)
textToPrint= textToPrint.Remove(textToPrint.IndexOf(decSeperator[0]) + 3);
}
}
如果可以在文本中找到分隔符,则会在2位数后修剪。如果最后一位数字高于5等,它可以像圆形一样改变。
XtraReports导出工具已经知道文本是否为数字,并且它将自己设置单元格类型
如果有人找到更好的解决方案,请随时与我们沟通。