zoukankan      html  css  js  c++  java
  • 多张表数据导入到execl中

    /// <summary>    

    /// 操作课程报表模板        

    /// </summary>        

    /// <param name="folder">文件夹路径</param>  

     /// <param name="filePath">文件路径</param>        

    /// <param name="templatePath">模板路径</param>        

    /// <param name="imgpath">图片路径</param>        

    /// <param name="coursewareList">课件列表数据</param>        

    /// <param name="parameterList">参数列表数据</param>        

    /// <param name="equipmentList">设备列表数据</param>        

    /// <returns></returns>        

    public string OperateCourseExcelTemplate(string folder, string filePath, string templatePath, string imgpath, DataTable coursewareList, DataTable parameterList, DataTable equipmentList, DataTable lineList)        

    {            

    string langType = LangHelper.LangGet() == LangType.EN ? "EN" : "CN"; //判断语言类型                                

    try            

    {                

    File.Copy(templatePath, filePath);                

    // 使用OleDb驱动程序连接到副本                

    OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=Excel 8.0;");                

    using (conn)                

    {                    

    conn.Open();                    

    OleDbCommand cmd = null;                    

    //课件列表                   

      if (coursewareList.Rows.Count > 0)                    

    {                        

    for (int i = 0; i < coursewareList.Rows.Count; i++)                        

    {      //区分中英文模板,'课件列表'是sheet名称,后面的列名称  (注意要跟模板名称匹配)                                               

    if (langType == "CN")                            

    {                                

    cmd = new OleDbCommand("INSERT INTO [课件列表$]([课件名称],[语言],[文件类型])"                               

    + " VALUES(@LocalFileName, @Language, @FileType)", conn);                            

    }                            

    else                           

      {                                

    cmd = new OleDbCommand("INSERT INTO [InstructionList$]([InstructionName],[Language],[FileType])"                              

    + " VALUES(@LocalFileName, @Language, @FileType)", conn);                            

    }                            

    cmd.Parameters.AddWithValue("@LocalFileName", coursewareList.Rows[i]["LocalFileName"].ToString());                            

    cmd.Parameters.AddWithValue("@Language", coursewareList.Rows[i]["Language"].ToString());                            

    cmd.Parameters.AddWithValue("@FileType", coursewareList.Rows[i]["FileType"].ToString());                            

    cmd.ExecuteNonQuery();                        

    }                    

    }                    

    //参数列表                    

    if (parameterList.Rows.Count > 0)                    

    {                        

    for (int i = 0; i < parameterList.Rows.Count; i++)                        

    {                            

    if (langType == "CN")                            

    {                                

    cmd = new OleDbCommand("INSERT INTO [参数列表$]([实验室名],[设备别名],[接口名],[端口名],[参数名],[参数值])"                               

    + " VALUES(@ElabName,@DeviceTypeDisplayName,@InterfaceName,@PortName,@ParameterKey,@ParameterValue)", conn);                            

    }                            

    else                            

    {                                

      cmd = new OleDbCommand("INSERT INTO [ParameterList$]([ElabName],[DisplayName],[InterfaceName],[PortName],[ParameterName],[ParameterValue])"                                 + " VALUES(@ElabName,@DeviceTypeDisplayName,@InterfaceName,@PortName,@ParameterKey,@ParameterValue)", conn);                            

    }                            

    cmd.Parameters.AddWithValue("@ElabName", parameterList.Rows[i]["ElabName"].ToString());                            

    cmd.Parameters.AddWithValue("@DeviveTypeDisplayName", parameterList.Rows[i]["DeviceTypeDisplayName"].ToString());                           

    cmd.Parameters.AddWithValue("@InterfaceName", parameterList.Rows[i]["InterfaceName"].ToString());                            

    cmd.Parameters.AddWithValue("@PortName", parameterList.Rows[i]["PortName"].ToString());                            

    cmd.Parameters.AddWithValue("@ParameterKey", parameterList.Rows[i]["ParameterKey"].ToString());                            

    cmd.Parameters.AddWithValue("@ParameterValue", parameterList.Rows[i]["ParameterValue"].ToString());                            

    cmd.ExecuteNonQuery();                        

    }                    

    }                    

    //设备列表                    

    if (equipmentList.Rows.Count > 0)                    

    {                        

    for (int i = 0; i < equipmentList.Rows.Count; i++)                        

    {                            

    if (langType == "CN")                            

    {                                

    cmd = new OleDbCommand("INSERT INTO [设备列表$]([实验室名],[实验设备名],[设备ID],[IP],[设备位置])"                               

    + " VALUES(@ElabName,@DisplayName,@DeviceName,@IP,@Location)", conn);                            

    }                           

      else                            

    {                                

    cmd = new OleDbCommand("INSERT INTO [DeviceList$]([ElabName],[DisplayName],[DeviceNameID],[IP],[Location])"                                

    + " VALUES(@ElabName,@DisplayName,@DeviceName,@IP,@Location)", conn);                            

    }                            

    cmd.Parameters.AddWithValue("@ElabName", equipmentList.Rows[i]["ElabName"].ToString());                            

    cmd.Parameters.AddWithValue("@DisplayName", equipmentList.Rows[i]["DisplayName"].ToString());                            

    cmd.Parameters.AddWithValue("@DeviceName", equipmentList.Rows[i]["DeviceName"].ToString());                            

    cmd.Parameters.AddWithValue("@IP", equipmentList.Rows[i]["IP"].ToString());                            

    cmd.Parameters.AddWithValue("@Location", equipmentList.Rows[i]["Location"].ToString());                           

    cmd.ExecuteNonQuery();                        

    }                    

    }                    

    //连线列表                    

    if (lineList.Rows.Count > 0)                    

    {                        

    for (int i = 0; i < lineList.Rows.Count; i++)                        

    {

           if (langType == "CN")                            

    {                                

    cmd = new OleDbCommand("INSERT INTO [连线列表$]([源端口],[目标端口],[类型])"                               

    + " VALUES(@Srcs, @Targets, @Types)", conn);                            

    }                            

    else                            

    {                                

    cmd = new OleDbCommand("INSERT INTO [LineList$]([SourcePort],[TargetPort],[Type])"                               

    + " VALUES(@Srcs, @Targets, @Types)", conn);                            

    }                            

    cmd.Parameters.AddWithValue("@Srcs", lineList.Rows[i]["Srcs"].ToString());                            

    cmd.Parameters.AddWithValue("@Targets", lineList.Rows[i]["Targets"].ToString());                            

    cmd.Parameters.AddWithValue("@Types", lineList.Rows[i]["Types"].ToString());                            

    cmd.ExecuteNonQuery();                        

    }                    

    }

                   

    }           

      }           

      catch (Exception ex)           

      {                

    LogHelper.Error("DataWriteExcelTemplate.OperateCourseExcelTemplate",                       

    string.Format(msg_Error, filePath, ex.Message));               

      return null;            

    }

                return filePath;        

    }

    中文execl模板:

    英文execl模板:

    导入成功后的效果:

  • 相关阅读:
    CentOS7 配置163 yum源(详细步骤)
    从构建分布式秒杀系统聊聊分布式锁
    互联网架构“高并发”
    互联网架构“高可用”
    FineCMS
    layUI表单事件监听-事件监听机制简化处理
    界面优雅的UI框架layUI
    如果OCX使用onmousedown和onmouseup来决定指令发送和指令停止会不会有问题?
    CSS字体库font-face用法及跨域问题
    RequireJS被外部调用
  • 原文地址:https://www.cnblogs.com/sunny0515/p/3285609.html
Copyright © 2011-2022 走看看