zoukankan      html  css  js  c++  java
  • 用C#编程从数据库中读取图片数据导进Excel文件的方法(如何从数据库中读取保存的文件,直接打开,中间不保存到本地)

    View Code
    using System;
    using System.IO;
    using System.Data;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.Windows.Forms;
    using Excel;
    
    private void EduceExcel()
     {
      string picPath=Directory.GetCurrentDirectory()+'\\Excelpic.jpg';
      string ExcelName=Directory.GetCurrentDirectory()+'\\ExcelModul.xls';
      string fileName = 'Excel'+DateTime.Now.ToString().Replace(':', '') + '.xls';
      Excel.Application app =new Excel.Application();//建立Excel对象
       app.Visible=true;//让Excel文件可见
       Workbook objbook;
       objbook = app.Workbooks.Add(ExcelName);
       Worksheet worksheet;
       worksheet =(Worksheet)objbook.Worksheets[1];
       Excel.Pictures pics=(Excel.Pictures)worksheet.Pictures(Type.Missing);//建立图片集合对象
    
       int TD=1;
       int p=1;
       PicItemColletion picItems= PicItem.Getpictems();//读取数据库图片数据集合
        foreach(PicItem PI in picItems)
        {
         if(PI.ImageData != null)
         {
         MemoryStream stream = new MemoryStream(PI.ImageData, 0, PI.ImageData.Length);
         
         Bitmap bitmap = new Bitmap(stream);
    
         bitmap.Save(picPath,System.Drawing.Imaging.ImageFormat.Jpeg);//保存临时图片文件到硬盘里
          if(File.Exists(picPath))
          {
          stream.Close();//关闭图像文件流
    
         Range range_1 =range=worksheet.get_Range('A'+TD.ToString(),'A'+TD.ToString());
         //获取填充单元格范围
                 
          pics.Insert(picPath,Type.Missing);//获取图片
    
          Excel.Picture pic = (Excel.Picture )pics.Item(p);//建立图片集合某一图片对象
    
           pic.Left = (double)range_1.Left;
           pic.Top = (double)range_1.Top;
           pic.Height =(double)range_1.Height;
           pic.Width =(double)range_1.Width;
           TD=TD+1;
           p=p+1; 
          }
        }
    
       if(File.Exists(picPath))
       {
        File.Delete(picPath);//删除图片
       }
     }
  • 相关阅读:
    8bit数据 转换为 16bit数据的四种方法
    可变长度的结构体定义
    【转】typedef和#define的用法与区别
    编程事项
    FreeRTOS不允许在中断服务程序和临界段中执行不确定的性的操作
    低优先级任务在执行过程中高优先级任务在干什么
    使用FreeRTOS在SD卡驱动使用非系统延时导致上电重启不工作的情况
    PMOS 与 NMOS
    keil优化等级设置
    #define用法之一
  • 原文地址:https://www.cnblogs.com/songjiali/p/2633939.html
Copyright © 2011-2022 走看看