Labview调用C#封装的NPOI.dll生成报表

报表模板
L
C#读取报表模板,采用NOPI方式搜索模板段落并完成替换,最终生成报表并存放在指定路径下
C# .代码如下在这里插入代码片
namespace ReportGeneration
{
public class ReportGenerationNPOI
{
///
/// 报表生成
///
///
/// 实体数据
/// 产品信息
/// 报表搜素的产品信息
/// 报表搜素的测试项信息
/// 报表搜素的测试项结果信息
/// 测试项结果信息
/// 所有测试结果
/// 报表搜素的EDM7所有测试结果段
/// 报表保存路径
/// 报表模板路径
public void NormalCreateMachineDoc(string[] MachineProductInfoValue, string[] MachineSearchProductsinfo, string[] MachineTestValue, string[] MachineSearchTestitem, string[] MachineTestValueresult, string[] MachineSearchTestValueresult, string AllTestResultValue, string AllTestResultSeach, string ReportGenerationPath, string docTemplatePath)
{
List MachineTesProductInfoValue = new List();
for (int i = 0; i < MachineProductInfoValue.Length; i++)
{
MachineTesProductInfoValue.Add(MachineProductInfoValue[i]);
}

    List<string> MachineTestItemeValue = new List<string>();
    for (int i = 0; i < MachineTestValue.Length; i++)
    {
        MachineTestItemeValue.Add(MachineTestValue[i]);
    }

    List<string> MachineSearchProductsInfo = new List<string>();
    for (int i = 0; i < MachineSearchProductsinfo.Length; i++)
    {
        MachineSearchProductsInfo.Add(MachineSearchProductsinfo[i]);
    }

    List<string> MachineSearchTestIteme = new List<string>();
    for (int i = 0; i < MachineSearchTestitem.Length; i++)
    {
        MachineSearchTestIteme.Add(MachineSearchTestitem[i]);
    }
    List<string> MachineTestValueResult = new List<string>();
    for (int i = 0; i < MachineTestValueresult.Length; i++)
    {
        MachineTestValueResult.Add(MachineTestValueresult[i]);
    }
    List<string> MachineSearchTestValueResult = new List<string>();
    for (int i = 0; i < MachineSearchTestValueresult.Length; i++)
    {
        MachineSearchTestValueResult.Add(MachineSearchTestValueresult[i]);
    }

    if (File.Exists(docTemplatePath))
    {
        string newTempleteFileName = MachineProductInfoValue[0] + ".docx";
        if (!Directory.Exists(ReportGenerationPath))
        {
            Directory.CreateDirectory(ReportGenerationPath);
        }
        string newTempleteFullPath = ReportGenerationPath + newTempleteFileName;
        //  File.Copy(docTemplatePath, newTempleteFullPath);//拷贝doc模板
        //读取Word模板
        FileStream fileStream = new FileStream(docTemplatePath, FileMode.Open, FileAccess.ReadWrite);
        XWPFDocument myDoc = new XWPFDocument(fileStream);
        // 遍历段落,替换内容
        foreach (var para in myDoc.Paragraphs)
        {
            ReplaceKey(DateTime.Now.ToString("yyyy-MM-dd HH:mm"), "GenerationTime", para);
        }
        //遍历table,替换单元格内容                
        foreach (var row in myDoc.Tables[0].Rows)
        {
            foreach (var cell in row.GetTableCells())
            {
                foreach (var para in cell.Paragraphs)
                {
                    for (int i = 0; i < MachineSearchProductsInfo.Count(); i++)
                    {
                        ReplaceKey(MachineTesProductInfoValue[i], MachineSearchProductsInfo[i], para);

                    }
                }
            }
        }
        foreach (var row in myDoc.Tables[1].Rows)
        {
            foreach (var cell in row.GetTableCells())
            {
                foreach (var para in cell.Paragraphs)
                {
                    for (int i = 0; i < MachineSearchTestIteme.Count; i++)
                    {
                        ReplaceKey(MachineTestItemeValue[i], MachineSearchTestIteme[i], para);

                    }
                    for (int i = 0; i < MachineSearchTestValueResult.Count; i++)
                    {
                        ReplaceKey(MachineTestValueResult[i], MachineSearchTestValueResult[i], para);

                    }
                }
            }
        }
        foreach (var para in myDoc.Paragraphs)
        {
            ReplaceKey(AllTestResultValue, AllTestResultSeach, para);
        }
        FileStream fs = new FileStream(newTempleteFullPath, FileMode.Create);
        myDoc.Write(fs);
        fs.Close();
    }

}
/// <summary>
/// word模板内容替换
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="etity">实体数据</param>
/// <param name="para">段落</param>
private static void ReplaceKey(string value, string SearchValue, XWPFParagraph para)
{
    var runs = para.Runs;
    string text = "";
    foreach (var run in runs)
    {
        string propteryName = SearchValue;//Word模板中设定的需要替换的标签 
        text = run.ToString();
        if (text.Contains(propteryName))
        {
            text = text.Replace(propteryName, value.ToString());
        }
        run.SetText(text);//替换标签文本(重要)
    }
}

}

Labview调用ReportGenerationNPOI.dll生成报表
在这里插入图片描述
最终生成的报表如下
在这里插入图片描述

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值