C# 把SQL的查询结果导入excel固定模板

SELECT MO.MOCODE AS 工单,
       QC2.ITEMCODE AS 项目编码, 
       CU.CUSTOMERNAME AS 客户,
       MO.INPUTQTY AS 检查数量,
       QC1.ITEMCODE AS 检查项目编码,
       QC1.ITEMNAME AS 检查项目名称,
       QC1.LIMITLOW AS 下限值,
       QC1.LIMITHIGH AS 上限值,
       QC1.QCVALUE AS 实测值,
       CASE WHEN QC1.RESULT='0' THEN '不合格' ELSE '合格' END AS 检查结果, 
       QC1.CREATIONTIME AS 检查时间
  FROM QC_FLQC_SAMPLE_D QC1
INNER JOIN QC_FLQC_H QC2
    ON QC2.ID = QC1.FLQCID
INNER JOIN PRD_MO MO
    ON QC2.MOCODE = MO.MOCODE 
   AND QC2.ITEMCODE = MO.ITEMCODE
INNER JOIN BAS_CUSTOMER CU
    ON MO.CUSTOMERCODE = CU.CUSTOMERCODE
WHERE QC2.PROCESSCODE IN ('MAN001', 'MAN002')
AND mo.mocode='106K23X-1' AND qc1.itemcode NOT LIKE '%构造%'

根据上面的SQL语句的查询结果如图所示,当mo.mocode不同时,查询的结果也会有所区别

img 然后现在把查询到的结果需要导入到空白的excel模板中,做到下面的效果

img

img

还有,当工单不同时,电气检查可能也会变多,参考模板;尺寸的检验项目也可能会变多,也就是当有QA检查尺寸013,014...时,如下图,会有一个尺寸附加页(另一个sheet),需要把L11开始的数据填充到这个附加页中

img

现在有两种思路,一种是把查询结果导出为datagridview然后填充到模板中,另一种思路是把数据填入到一个sheet,然后模板里的内容就取sheet里面固定单元格的内容

可以不用我这两个思路,哪种最简单就用哪种方式,给一下全套代码谢谢大佬们咯

望采纳,谢谢

调用NPOI将数据导入到Excel中
  调用NPOI控件,并将数据导入到Excel中:

   private void btnExcel_Click(object sender, EventArgs e)

    {

        NPOIExcel.GenerateXlsFromXlsTemplate(dataGridView1);

    }

指定文件存储路径

  点击生成EXCEL,跳出存储对话框(如下图),接下来我们做的就是先找到存放这个文件的路径,代码如下:

   static void WriteToFile()

    {

        SaveFileDialog saveFileDialog = new SaveFileDialog();

        saveFileDialog.Filter = "Execl files (*.xls)|*.xls";

        saveFileDialog.FilterIndex = 0;

        saveFileDialog.RestoreDirectory = true;

        saveFileDialog.CreatePrompt = true;

        saveFileDialog.Title = "Excel文件另存为…";

        //  saveFileDialog.ShowDialog();

        if (saveFileDialog.ShowDialog() != DialogResult.OK)

            return;

        string myExcel = saveFileDialog.FileName;         

        FileStream file = new FileStream(myExcel, FileMode.Create);

        hssfworkbook.Write(file);

        file.Close();

    }

这个问题确实不难,之前我就做过生产指令单,同样是用公式从预排产sheet中load入,看下图

img

如果对你有用,你可以把excel文件发给我,我给你设好示范公式,你即可完善使用。
对于多模板问题,有几个模板就分成几个工作簿文件就行了,并在sql中过滤
对于如何从sql中获取数据,简单一点就是查询后复制到sheet中,
当然,如果你的excel支持查询连接,则可以直接添加连接查询直接获取
希望对你有用