Как динамически печатать информацию из строк datagrid в документ word
Я создаю приложение для расчета заработной платы для клиента и столкнулся с проблемой создания отчета в Microsoft Word. Вся информация о зарплате и сотрудниках сохраняется в базе данных Sql Server.
Итак, проблема в том, что я не знаю, как создать отчет динамически, чтобы соответствовать требованиям их отчета.
Отчет должен в основном показывать текущий, предыдущий или следующий платежный период (у меня есть макет того, как он должен выглядеть, так что это не большая проблема).
Когда они переходят на вкладку отчеты в приложении, отображается datagrid со всей информацией о зарплате, которая уже была сохранена.
Поэтому, когда они фильтруют сетку, чтобы показать определенный период оплаты, и выбирают строки, которые отображаются после фильтра, кнопка печати становится включенной и должна напечатать выбранные строки и "объединить" необходимую информацию в отчетном документе.
Что я уже пробовал:
Я попытался сделать простой mailmerge с помощью OpenXml со следующим кодом (который, как ни удивительно, не работает):
using (WordprocessingDocument doc = WordprocessingDocument.Open(@"E:\test.docx", true)) { var body = doc.MainDocumentPart.Document.Body; var paras = body.Elements(); foreach (var para in paras) { foreach (var run in para.Elements()) { foreach (var text in run.Elements()) { if (text.InnerText.Contains("Name")) { text.InnerText.Equals(text.InnerText.Replace("Name", "Bruh")); } } } } }
Теперь я не уверен, что mailmerge-это правильный путь, потому что если я создам шаблон отчета, как я смогу повторно использовать этот шаблон для каждой строки?
Например: если Джон, Мэри и Джек имеют по пять строк в datagrid (я уже знаю, как суммировать денежные столбцы, поэтому вместо того, чтобы иметь 15 строк, идущих в отчет, он станет 3 после суммирования денежных столбцов), как я могу использовать тот же шаблон для Джона, Мэри и Джека?
Payroll Register - - - - - - - - - - - Period No. period_num period_date Run Date run_date - - - - - - - - -Earnings- - - - - - - - - - - -Deductions - - - - - - This Per. Y-T-D This Per. This Per. Y-T-D Employee Employer Employee Emp No Name NIS Ref T.R.N. Tax Basis Department Cost Centre TOTALS Rent Cheque * Net Pay
Это всего лишь пример того, как он должен выглядеть для одного (1) сотрудника/строки, для других сотрудников/строк он должен повторно использовать тот же макет/формат.
F-ES Sitecore
Итак, вы пишете функциональность для клиента и фактически хотите, чтобы кто-то сделал эту работу за вас, предположительно для того, чтобы вы могли представить ее и получить за нее деньги? Почему вы думаете, что кто-то будет делать вашу работу бесплатно? Если вы не можете выполнить работу, на которую вы наняты, то заключите субподряд или попробуйте нанять фрилансера (оба из которых, вероятно, сделают то, что вы только что сделали), но никто здесь не будет делать вашу работу за вас.