我正在LightSwitch结算应用程序中生成发票,生成发票后,Word文档中的SubTotal,SalesTax和Total Due单元格格式不正确。
我已经浏览了每个菜单选项,并探索了其他可能的方法,以便在将其放入文档的Content控件之前对其进行格式化,但我无法获得正确的格式。< / p>
这些数字显示为4100.0000
,但它们应该像4,100.00
或至少像4100.00
。
如何做到这一点?
我意识到这是偏离主题的,但我想我会在这里发帖,因为我相信解决方案涉及编写代码,而不是使用Word来完成此操作,因为我已经完成了所有选项,似乎没有一个选项来改变单个单元格的格式。
根据要求,生成文档的代码:
using System;
using System.Linq;
using System.IO;
using System.IO.IsolatedStorage;
using System.Collections.Generic;
using Microsoft.LightSwitch;
using Microsoft.LightSwitch.Framework.Client;
using Microsoft.LightSwitch.Presentation;
using Microsoft.LightSwitch.Presentation.Extensions;
using OfficeIntegration;
namespace LightSwitchApplication
{
public partial class Billing
{
partial void GenerateInvoice_Execute()
{
var mappings = new List<ColumnMapping>();
mappings.Add(new ColumnMapping("InvoiceId", "InvoiceId"));
mappings.Add(new ColumnMapping("DateGenerated", "DateGenerated"));
mappings.Add(new ColumnMapping("InvoiceDataGridSubTotal", "SubTotal"));
mappings.Add(new ColumnMapping("InvoiceDataGridSalesTax", "Tax"));
mappings.Add(new ColumnMapping("InvoiceDataGridDateDue", "DateDue"));
mappings.Add(new ColumnMapping("InvoiceDataGridTotalDue", "Total"));
object doc;
string path = @"C:\Users\Jason\Documents\SV Invoice.docx";
doc = OfficeIntegration.Word.GenerateDocument(path, this.BillingTables.SelectedItem, mappings);
}
}
}
答案 0 :(得分:2)
在这种情况下,不需要代码和Word格式。为了在动态生成的Word文档中正确格式化数字,必须在Visual Studio LightSwitch中的数据设计器中设置要使用的格式:
Table
Field
Properties
窗格中,向下滚动,直至看到格式设置(Format Pattern
)C2
进行格式化。按照上述步骤,我能够生成具有以下格式的Word文档:
4500.00
代替4500.0000
。
答案 1 :(得分:1)
您应该能够为ColumnMapping
构造函数提供第三个参数:格式化值的委托:
Func<decimal, string> formatDelegate = x => x.ToString("c2");
mappings.Add(new ColumnMapping("InvoiceDataGridSubTotal", "SubTotal",
FormatDelegate: formatDelegate));