`

把图片插入excel表格并按分类生成sheets

阅读更多
private void Excel_Click(object sender, System.EventArgs e)
  { 
   
   if(this.Customers_Name_List.SelectedValue!=""&&this.VersionName.SelectedValue!="")
   {
    
    Object refmissing = System.Reflection.Missing.Value;
    Excel._Application application=new Excel.ApplicationClass();
    application.Visible=false;
    
    Excel.Workbooks workbooks=application.Workbooks;
    workbooks._Open(Server.MapPath("Excel//Out.xls"), refmissing, refmissing, refmissing, refmissing, refmissing, refmissing, refmissing, refmissing, refmissing, refmissing, refmissing, refmissing);
    application.DisplayAlerts=false;
    common com=new common();
    string names="";
    names=names+"select distinct Category_Name  from Product";
    names=names+" inner join Categroy on Categroy.CategoryId=Product.CategroyID";
    names=names+" inner join Quotation on Product.ProductID=Quotation.ProductID";
    names=names+" inner join Customer on Customer.CustomerID=Quotation.CustomerID";
    names=names+" left outer join Wattage on Wattage.WattageID=Product.WattageID";
    names=names+" left outer  join MaxWattage on MaxWattage.MaxWattageID=Product.MaxWattageID";
    names=names+" left outer  join Brand on Brand.BrandID=Product.BrandID";
    names=names+" left outer  join Voltage on Voltage.VoltageID=Product.VoltageID";
    names=names+" left outer  join Product_ESL on Product_ESL.Product_ESLID=Product.Product_ESLID";
    names=names+" left outer  join Plug on Plug.PlugID=Product.PlugID";
    names=names+" left outer  join Certificate on Certificate.CertificateID=Product.CertificateID";
    names=names+" left outer  join Standard on Standard.StandardID=Product.StandardID";
    names=names+" left outer  join LampBase on LampBase.LampBaseID=Product.LampBaseID";
    names=names+" left outer  join LifeTime on LifeTime.LifeTimeID=Product.LifeTimeID";
    names=names+" where Customer.CustomerID="+Convert.ToInt32(this.Customers_Name_List.SelectedValue)+" and Quotation.Version='"+this.VersionName.SelectedValue+"'";
    DataSet dsname=com.GetRecordset(names);
    if(dsname.Tables[0].Rows.Count>3)
    {
     application.Worksheets.Add(Type.Missing,Type.Missing,dsname.Tables[0].Rows.Count-3,Type.Missing);
    }
   
    for(int i=0;i<application.Worksheets.Count;i++)
    {
    
     Excel.Worksheet worksheet=(Excel.Worksheet)application.Worksheets.get_Item(i+1);
     
     if(i>dsname.Tables[0].Rows.Count-1)
     {
     
      worksheet.Delete();

     }
     else
     {
      worksheet.Activate();
     }
     string select="";
     if(dsname!=null)
     {
      if(i<dsname.Tables[0].Rows.Count)
      {
      
       worksheet.Name=dsname.Tables[0].Rows[i][0].ToString();
       //-------------------------
       select="select distinct Category_Name,Series_Name,Model_Name,Product_Name,Wattage,MaxWattage,Brand,Voltage,Description,Product_ESL,Plug,certificate,Product_Picture,Standard,LampBase,LifeTime,Quotation.MOQ,Quotation.Remark";
       string  itemname=common.single_datafield(this.Customers_Name_List.SelectedValue);
       select=select+itemname;
       select=select+" from Product";
       select=select+" inner join Categroy on Categroy.CategoryId=Product.CategroyID";
       select=select+" inner join Quotation on Product.ProductID=Quotation.ProductID";
       select=select+" inner join Customer on Customer.CustomerID=Quotation.CustomerID";
       select=select+" left outer join Wattage on Wattage.WattageID=Product.WattageID";
       select=select+" left outer  join MaxWattage on MaxWattage.MaxWattageID=Product.MaxWattageID";
       select=select+" left outer  join Brand on Brand.BrandID=Product.BrandID";
       select=select+" left outer  join Voltage on Voltage.VoltageID=Product.VoltageID";
       select=select+" left outer  join Product_ESL on Product_ESL.Product_ESLID=Product.Product_ESLID";
       select=select+" left outer  join Plug on Plug.PlugID=Product.PlugID";
       select=select+" left outer  join Certificate on Certificate.CertificateID=Product.CertificateID";
       select=select+" left outer  join Standard on Standard.StandardID=Product.StandardID";
       select=select+" left outer  join LampBase on LampBase.LampBaseID=Product.LampBaseID";
       select=select+" left outer  join LifeTime on LifeTime.LifeTimeID=Product.LifeTimeID";
       select=select+" where Customer.CustomerID="+Convert.ToInt32(this.Customers_Name_List.SelectedValue)+" and Quotation.Version='"+this.VersionName.SelectedValue+"'";
       select=select+" and Category_Name='"+dsname.Tables[0].Rows[i][0].ToString()+"'";
       System.Text.StringBuilder sb=new System.Text.StringBuilder();
       //Response.Write(select);
       if(i<1)
       {
        this.itemname();
       }
       DataSet ds=com.GetRecordset(select);
       int rowIndex=2; 
       int colIndex=1;
       int col=0;
       foreach(DataGridColumn col1 in this.InfoDataGrid.Columns) 
       { 
        col++; 
        application.Cells[1,col] = col1.HeaderText; 
        application.get_Range(application.Cells[1,col],application.Cells[1,col]).HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置标题格式为居中对齐 
        
       } 
       foreach(DataRow datarow in ds.Tables[0].Rows)
       {
        foreach(DataColumn datacolumn in ds.Tables[0].Columns)
        {
         if(colIndex==13)
         {
          //application.Cells[rowIndex,colIndex] ="ok";
          Excel.Pictures pictures=(Excel.Pictures)worksheet.Pictures(Type.Missing);
          Excel.Picture picture=pictures.Insert(@Server.MapPath(datarow[datacolumn].ToString()),Type.Missing);
          Excel.Range range=worksheet.get_Range("M"+rowIndex.ToString(),Type.Missing);
          picture.Left=(double)range.Left;
          picture.Top=(double)range.Top;
          picture.Width=(double)range.Width;
          picture.Height=(double)range.Height;
          
         }
         else
         {
          application.Cells[rowIndex,colIndex] =datarow[datacolumn].ToString(); 
         }
         
         colIndex=colIndex+1;
         if(colIndex>this.InfoDataGrid.Columns.Count)
         {
          colIndex=1;
         }
        }
        rowIndex=rowIndex+1;
       }
       //-----------------------
       if(i<1)
       {
        //break;
       }
      }
     }
     
     System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
     worksheet=null;
    }
   
    //Response.End();
    workbooks.get_Item(1).SaveCopyAs(Server.MapPath("Excel//Out1.xls"));
    workbooks.Close();
   
    application.DisplayAlerts=true;
    application.Quit();
    System.Runtime.InteropServices.Marshal.ReleaseComObject(workbooks);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(application);
    workbooks=null;
    application=null;
    string path=Server.MapPath("Excel//Out1.xls");
    System.IO.FileInfo file = new System.IO.FileInfo(path); 
    Response.Clear(); 
    Response.Charset="GB2312"; 
    Response.ContentEncoding=System.Text.Encoding.UTF8; 
    // 添加头信息,为"文件下载/另存为"对话框指定默认文件名 
    Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(file.Name)); 
    // 添加头信息,指定文件大小,让浏览器能够显示下载进度 
    Response.AddHeader("Content-Length", file.Length.ToString()); 
    
    // 指定返回的是一个不能被客户端读取的流,必须被下载 
    Response.ContentType = "application/ms-excel"; 
    
    // 把文件流发送到客户端 
    Response.WriteFile(file.FullName); 
    // 停止页面的执行 
   
    Response.End(); 
   }
  }

 

 
分享到:
评论

相关推荐

    vue Excel表格 导入

    导入Excel表格主要涉及到文件读取和数据解析。Vue3项目中,通常会使用`@vue/composition-api`的`ref`和`onMounted`来处理文件上传事件。以下是一个简单的例子: ```javascript import { ref, onMounted } from '@...

    POI导出Excel表格

    在这个“POI导出Excel表格”的实例中,我们将深入探讨如何利用Apache POI进行Excel文件的导入与导出操作。 首先,我们需要在项目中集成Apache POI库。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```...

    用Visual C#如何调用Excel,如何又把数据存放到Excel表格中

    本教程将详细介绍如何使用Visual C#来调用Excel并把数据存放到Excel表格中。这一过程通常涉及COM互操作,它是.NET Framework提供的一种机制,使得.NET应用能够与非托管代码(如Excel COM对象)进行交互。 首先,...

    vba插入excel数据到word

    例如,用户可能需要将Excel表格中特定行列的数据批量导入到多个Word文档中,以自动生成报告或统计文件等。 #### 二、技术原理概述 本案例中,关键在于通过VBA脚本实现Excel与Word之间的数据交换。具体来说,我们...

    C# 调用OFFICE组件生成Excel表格示例

    本示例探讨的是如何使用C#调用Office组件,特别是Microsoft Office Interop库,来生成Excel表格。这个技术在报表生成、数据导出、自动化测试等多个场景中都非常实用。 首先,你需要在你的开发环境中引用Microsoft....

    powerDesiger导入数据(Excel转PDM)

    在进行数据库设计时,经常会遇到需要将Excel表格中的数据转换为PowerDesigner的数据模型,即PDM(Physical Data Model)。这个过程可以极大地提高工作效率,特别是在处理大量数据时。本文将详细介绍如何利用Excel...

    jxls利用模板生成excel文件

    在IT行业中,数据处理和报告生成是常见的需求,特别是当需要将大量数据导出为易于查看和分析的格式时,Excel表格成为了首选。而`jxls`正是一个Java库,它提供了一种高效、灵活的方式来利用模板生成Excel文件,极大地...

    tableWidget的excel文件的数据导入导出

    **导入Excel数据到tableWidget** 1. **打开Excel文件**:首先,我们需要读取Excel文件并获取其内容。 ```cpp QFile file("input.xlsx"); file.open(QIODevice::ReadOnly); QTextStream in(&file); ``` 2. **解析...

    C# Excel表格数据的导出和导入 VS2010版

    在.NET开发环境中,C#语言提供了多种方法来处理Excel数据的导出和导入,尤其是在Visual Studio 2010版本中。本主题将详细介绍如何利用C#与Excel进行交互,以便于数据的读取和写入操作。 1. **Excel Interop库**:在...

    Vb Excel表格制作

    这个“Vb Excel表格制作”压缩包可能包含了一系列的源代码示例,帮助开发者学习如何利用VB操作Excel进行表格制作。 首先,VB(Visual Basic 6或Visual Basic .NET)是Microsoft开发的一种面向对象的编程语言,它...

    通过nodejs将Excel转换成flatbuffer,并生成对应的描述解析文件(TypeScript)

    在本项目中,我们将探讨如何利用Node.js环境,结合TypeScript,将Excel文件转换为Flatbuffer格式,并生成相应的描述解析文件。 首先,我们需要安装必要的依赖库。对于Excel处理,可以使用`xlsx`库,它能够读取和...

    VB 把access数据库上的文件导入到excel表里

    本教程将详细介绍如何通过VB将Access数据库中的数据导入到Excel表格中,以及如何从DataGridView控件导入数据到Excel。 首先,确保在VB项目中添加了对Microsoft ActiveX Data Objects(ADO)和Microsoft Excel ...

    excel 文件中批量生成 insert语句 sql

    例如,如果Excel表格中的某列是日期型,则在数据库中对应的字段也应该是日期型。 #### 2. 工具选择 为了实现从Excel到INSERT语句的转换,我们可以采用以下几种方式: - **手动编写脚本**:使用Python或VBA等编程...

    C++MFC 使用VS2010导出Excel的方法及步骤.doc

    如果你需要从ListCtrl控件中导出数据,可以遍历ListCtrl的每一项,获取数据并按上述方式写入Excel。只需替换`range.put_Value2()`中的数据即可。 这个过程与网上许多文章中描述的基本相同,只是某些函数名可能根据...

    纯html+js+css,支持excel导入和选择字体百家姓生成器

    这个应用的核心在于读取Excel文档,处理其中的数据,并结合用户选择的字体生成特定的百家姓图片。以下是对这些知识点的详细说明: 1. **HTML (HyperText Markup Language)**: HTML是网页内容的基础,用于定义页面...

    HTML读取Excel表内容的js插件

    HTML与Excel交互是Web开发中的常见需求,尤其是在数据导入、导出或在线表格编辑的应用场景。本主题聚焦于使用JavaScript插件将Excel文件的内容读取并显示在HTML页面上,甚至实现将这些数据上传到数据库的功能。我们...

    vue生成excel的组件.zip

    这里的工作表是Excel文件的一个组成部分,可以包含多个表格。 然后,我们将创建一个工作簿(Workbook),这是Excel文件的容器,可以包含多个工作表。创建一个工作簿并添加工作表的代码如下: ```javascript let ...

    jxl操作excel表格

    在Java编程环境中,处理Excel文件是一项常见的任务,特别是在数据导入导出、数据分析或者报表生成等场景。`jxl`库是Java中一个广泛使用的库,它允许开发者方便地读取、写入和修改Excel文件。本文将深入探讨如何利用`...

    将文本转换成Excel和Google Sheets公式.txt

    Google Sheets可以导入存储为文本文件(如.txt或.csv格式)的数据,并自动将其转换为表格格式。操作步骤如下: - 在Google Sheets中点击“文件”菜单中的“导入”选项。 - 浏览并选择包含文本数据的文件。 - 在导入...

    Delphi控制Excel自动生成报表

    本文将详细介绍如何使用 Delphi 控制 Excel 自动生成报表,并涵盖以下关键知识点: #### 2.1 创建 Excel 文件 创建 Excel 文件首先需要利用 Delphi 来激活 Excel 对象。这通常通过 OLE (Object Linking and ...

Global site tag (gtag.js) - Google Analytics