1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| public class SpireWordHelper { public void CreateWord(CreatePaymentData data) { Document doc = new Document(data.TempWord); doc.Properties.FormFieldShading = false; var sections = doc.Sections[0]; var paraList = sections.Paragraphs; paraList[2].Text = "至:" + data.sName; paraList[17].Text = "至:" + data.sName;
var nowDate = DateTime.Now;
paraList[13].Text = nowDate.ToString("yyyy年MM月"); paraList[28].Text = nowDate.ToString("yyyy年MM月");
Table table1 = doc.Sections[0].Tables[0] as Table; Table table2 = doc.Sections[0].Tables[1] as Table; var printer = data.BillingPrinters; decimal serviceTotal = 0, fixedTotal = 0; for (int i = 0; i < printer.Count; i++) { table1.AddRow(); table2.AddRow(); table1 = GetRange(table1, printer[i].AssetModel, i + 1, 0); table2 = GetRange(table2, printer[i].AssetModel, i + 1, 0);
table1 = GetRange(table1, printer[i].SerialNo, i + 1, 1); table2 = GetRange(table2, printer[i].SerialNo, i + 1, 1);
table1 = GetRange(table1, printer[i].Address, i + 1, 2); table2 = GetRange(table2, printer[i].Address, i + 1, 2);
table1 = GetRange(table1, "XXX", i + 1, 3); table2 = GetRange(table2, "XXX", i + 1, 3);
table1 = GetRange(table1, printer[i].ServicePeriod1, i + 1, 4, 0); table1 = GetRange(table1, printer[i].ServicePeriod2, i + 1, 4, 1);
table2 = GetRange(table2, printer[i].ServicePeriod1, i + 1, 4, 0); table2 = GetRange(table2, printer[i].ServicePeriod2, i + 1, 4, 1);
table1 = GetRange(table1,printer[i].ServiceTotalAmount.ToString(), i + 1, 5); table2 = GetRange(table2, printer[i].FixedTotalAmount.ToString(), i + 1, 5); serviceTotal += printer[i].ServiceTotalAmount; fixedTotal += printer[i].FixedTotalAmount; } //汇总数据 table1.AddRow(); table1 = GetRange(table1, "XXXX", printer.Count + 1, 4); table1 = GetRange(table1, serviceTotal.ToString(), printer.Count + 1, 5); table2.AddRow(); table2 = GetRange(table2, "XXXX", printer.Count + 1, 4); table2 = GetRange(table2, fixedTotal.ToString(), printer.Count + 1, 5);
string filePath = data.SavePath + "/" + data.FileNameWord; doc.SaveToFile(filePath, FileFormat.Docx); WordHelper wordHelper = new WordHelper(); wordHelper.RemoveWatermark(filePath); }
private Table GetRange(Table table, string text, int i, int j, int k = 0) { var range = table[i, j].AddParagraph().AppendText(text); range.CharacterFormat.FontName = "Arial"; range.CharacterFormat.FontSize = 9; range.CharacterFormat.TextColor = Color.Black; range.CharacterFormat.Bold = false; table[i, j].CellFormat.VerticalAlignment = VerticalAlignment.Middle; table[i, j].Paragraphs[k].Format.HorizontalAlignment = HorizontalAlignment.Center; return table; } }
|