zoukankan      html  css  js  c++  java
  • C#操作excel(读取excel里的图片并show在页面上)

    在操作excel的时候,除了制作chart之外,很多时候还要读取excel里的图片到数据库里。下面简单介绍下从excel里抓图片到db,并从db里捞出来。
      1 using System;
      2  using System.Collections.Generic;
      3  using System.Linq;
      4  using System.Text;
      5  using System.Data.SqlClient;
      6  using System.Data;
      7 using Microsoft.Office.Interop.Excel;
      8 using System.Configuration;
      9 using System.Windows.Forms;
    10 using System.Drawing;
    11 using System.IO;
    12 namespace a_stock
    13 {
    14     class ExcelWithPicture
    15     {
    16         //excel里有图片的路径
    17         public static readonly string path = "C:\\GDS\\NBQAA Mockup DFM Report(1126).xls";
    18         //数据库连接字符串
    19         public static readonly string conStr = ConfigurationSettings.AppSettings["strConn"].ToString();
    20         public static void Read_excel_withpicture()
    21         {
    22             Microsoft.Office.Interop.Excel.Application MyExcel = new Microsoft.Office.Interop.Excel.Application();
    23             //打开excel
    24             MyExcel.Workbooks.Open(path, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
    25             Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
    26             Microsoft.Office.Interop.Excel.Workbook It_book = null;
    27             Microsoft.Office.Interop.Excel.Worksheet It_sheet = null;
    28             Microsoft.Office.Interop.Excel.Range It_rang = null;
    29             MyExcel.DisplayAlerts = false;
    30             It_book = MyExcel.Workbooks[1];
    31             //获取sheet表
    32             It_sheet = (Worksheet)It_book.Worksheets[1];
    33             //initial the data
    34             int Priority = -9999, Fsize = 0;
    35             string Initial_date = "", DFX_number = "", Special_Issue = "", Issue_location = "", Suggestion_DFX = "", NPR = "", Category = "", Owner = "", status = "";
    36             byte[] Special_Picture={};
    37             It_rang = It_sheet.get_Range("E11", "G11");
    38             It_rang.Select();
    39             //拷贝单元格的图片,记住get_Range所选取的矩阵范围一定要比图片所占据单元格的范围大,否则只会显示一部分
    40              It_rang.CopyPicture(XlPictureAppearance.xlScreen,XlCopyPictureFormat.xlBitmap);
    41             if (Clipboard.ContainsImage())
    42             {
    43                 MemoryStream imagestream=new MemoryStream();
    44                Clipboard.GetImage().Save(imagestream,System.Drawing.Imaging.ImageFormat.Jpeg);
    45                //int length = (int)imagestream.Length;
    46                Fsize = (int)imagestream.Length;
    47                 //图片字节流
    48                 Special_Picture=imagestream.ToArray();
    49                 //imagestream.Read(Special_Picture,0,length);
    50             }
    51                    //取得其他单元格相应的值
    52             Priority =Convert.ToInt32( It_sheet.get_Range("B11",Type.Missing).Text.ToString());
    53             Initial_date = It_sheet.get_Range("C11",Type.Missing).Text.ToString();
    54             DFX_number = It_sheet.get_Range("D11", Type.Missing).Text.ToString();
    55             Special_Issue = It_sheet.get_Range("E11", Type.Missing).Text.ToString();
    56             Issue_location = It_sheet.get_Range("H11", Type.Missing).Text.ToString();
    57             Suggestion_DFX = It_sheet.get_Range("I11", Type.Missing).Text.ToString();
    58             NPR = It_sheet.get_Range("O10", Type.Missing).Formula.ToString();
    59             Category = It_sheet.get_Range("Q11", Type.Missing).Text.ToString();
    60             Owner = It_sheet.get_Range("R11", Type.Missing).Text.ToString();
    61             status = It_sheet.get_Range("S11", Type.Missing).Text.ToString();
    62
    63             //把图片相关信息录入数据库的存储过程
    64             excute_insert(conStr,Priority,Initial_date,DFX_number,Special_Issue,Special_Picture,Issue_location,Suggestion_DFX,NPR,Category,Owner,status,Fsize);
    65
    66
    67             MyExcel.Quit();
    68             System.Runtime.InteropServices.Marshal.ReleaseComObject(MyExcel);
    69             MyExcel = null;
    70             It_book = null;
    71             It_sheet = null;
    72
    73         
    74         }
    75         public static void excute_insert(string con, int Priority, string Initial_date, string DFX_number, string Special_Issue, byte[] Special_Picture, string Issue_location, string Suggestion_DFX, string NPR, string Category, string Owner, string status, int Fsize)
    76         {
    77             SqlConnection con_ = new SqlConnection(con);
    78             SqlCommand cmd = new SqlCommand("Insert_ExcelWithPicture", con_);
    79             cmd.CommandType = CommandType.StoredProcedure;
    80             cmd.CommandTimeout = 0;
    81
    82             cmd.Parameters.Add("@Priority", SqlDbType.Int);
    83             cmd.Parameters.Add("@Initial_date", SqlDbType.NVarChar);
    84             cmd.Parameters.Add("@DFX_number", SqlDbType.NVarChar);
    85             cmd.Parameters.Add("@Special_Issue", SqlDbType.NVarChar);
    86             cmd.Parameters.Add("@Special_Picture", SqlDbType.Image);
    87             cmd.Parameters.Add("@Issue_location", SqlDbType.NVarChar);
    88             cmd.Parameters.Add("@Suggestion_DFX", SqlDbType.NVarChar);
    89             cmd.Parameters.Add("@NPR", SqlDbType.NVarChar);
    90             cmd.Parameters.Add("@Category", SqlDbType.NVarChar);
    91             cmd.Parameters.Add("@Owner", SqlDbType.NVarChar);
    92             cmd.Parameters.Add("@status", SqlDbType.NVarChar);
    93             cmd.Parameters.Add("@Fsize", SqlDbType.Int);
    94           
    95             cmd.Parameters["@Priority"].Value =Priority;
    96             cmd.Parameters["@Initial_date"].Value =Initial_date;
    97             cmd.Parameters["@DFX_number"].Value = DFX_number;
    98             cmd.Parameters["@Special_Issue"].Value = Special_Issue;
    99             cmd.Parameters["@Special_Picture"].Value = Special_Picture;
    100             cmd.Parameters["@Issue_location"].Value = Issue_location;
    101             cmd.Parameters["@Suggestion_DFX"].Value = Suggestion_DFX;
    102             cmd.Parameters["@NPR"].Value = NPR;
    103             cmd.Parameters["@Category"].Value = Category;
    104             cmd.Parameters["@Owner"].Value = Owner;
    105             cmd.Parameters["@status"].Value = status;
    106             cmd.Parameters["@Fsize"].Value = Fsize;
    107
    108             con_.Open();
    109             cmd.ExecuteNonQuery();
    110             con_.Close();
    111         }
    112     }
    113 }
    114

    从db里面抓出来show在web上:

    1 using System;
    2 using System.Collections;
    3 using System.Configuration;
    4 using System.Data;
    5 using System.Linq;
    6 using System.Web;
    7 using System.Web.Security;
    8 using System.Web.UI;
    9 using System.Web.UI.HtmlControls;
    10 using System.Web.UI.WebControls;
    11 using System.Web.UI.WebControls.WebParts;
    12 using System.Xml.Linq;
    13 using System.Data.SqlClient;
    14 using System.IO;
    15 public partial class Get_picture : System.Web.UI.Page
    16 {
    17     //string strConn = ConfigurationManager.AppSettings["strConn"];
    18     public static readonly string strConn = ConfigurationManager.AppSettings["strConn1"];
    19
    20     protected void Page_Load(object sender, EventArgs e)
    21     {
    22         SqlConnection conn = new SqlConnection();
    23         conn.ConnectionString =strConn;
    24         conn.Open();
    25         string sql = "select * from [Get_ExcelWithPicture] where ID=7"; //这里id使用的是1,实际可以根据需要传一个值
    26         SqlCommand cmd = new SqlCommand(sql, conn);
    27         cmd.CommandTimeout =0;
    28         SqlDataReader dr = cmd.ExecuteReader();
    29
    30         //if (dr.Read())
    31         //{
    32         //    byte[] imgdata = (byte[])dr["Special_Picture"];
    33         //    Response.BinaryWrite(imgdata);
    34         //    dr.Close();
    35         //    conn.Close();
    36         //    Response.End();
    37         //}
    38
    39         if (dr.Read())
    40         {
    41             //Response.ContentType =  dr["ID"].ToString().Trim();
    42             Response.Clear();
    43             //输出图片文件二进制数据流
    44             Response.OutputStream.Write((byte[])dr["Special_Picture"], 0, 1+(int)dr["Fsize"]);
    45             Response.End();
    46         }
    47
    48     }
    49 }
  • 相关阅读:
    排序算法之希尔排序
    排序算法之直接插入排序
    PL/SQL之异常
    PL/SQL之包
    PL/SQL之存储过程和函数
    Oracle左连接、右连接、全外连接以及(+)号用法
    PL/SQL之存储过程和触发器实例
    PL/SQL之游标的使用
    Tag Tree
    目录:JAVA
  • 原文地址:https://www.cnblogs.com/angels/p/2101381.html
Copyright © 2011-2022 走看看