zoukankan      html  css  js  c++  java
  • Retrieve pictures from Excel file using OLEDB

    string file = @"C:sample.xlsx";
    
            if(System.IO.File.Exists(file))
            {
    
                Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
                excelApp.Visible = true; //FOR TESTING ONLY
                Microsoft.Office.Interop.Excel.Workbook wb = excelApp.Workbooks.Open(file,
                                    Type.Missing,
                                    Type.Missing,
                                    Type.Missing,
                                    Type.Missing,
                                    Type.Missing,
                                    Type.Missing,
                                    Type.Missing,
                                    Type.Missing,
                                    Type.Missing,
                                    Type.Missing,
                                    Type.Missing,
                                    Type.Missing,
                                    Type.Missing,
                                    Type.Missing);
    
                Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.Sheets[1];   //Selects the first sheet
                Microsoft.Office.Interop.Excel.Range range = (Microsoft.Office.Interop.Excel.Range)ws.Cells[1, 1];      //Select cell A1
                object cellValue = range.Value2;
    
                #region Extract the image
                Microsoft.Office.Interop.Excel.Picture pic = (Microsoft.Office.Interop.Excel.Picture)ws.Pictures(1);
    
                if (pic != null)
                {
                    //This code will detect what the region span of the image was
                    int startCol = (int)pic.TopLeftCell.Column;
                    int startRow = (int)pic.TopLeftCell.Row;
                    int endCol = (int)pic.BottomRightCell.Column;
                    int endRow = (int)pic.BottomRightCell.Row;
    
    
                    pic.CopyPicture(Microsoft.Office.Interop.Excel.XlPictureAppearance.xlScreen, Microsoft.Office.Interop.Excel.XlCopyPictureFormat.xlBitmap);
                    if (Clipboard.ContainsImage())
                    {
                        Image img = Clipboard.GetImage();
                        this.pictureBox1.Image = img;
                    }
                }
                #endregion
    
                //Close the workbook
                wb.Close(false,Type.Missing,Type.Missing);
    
                //Exit Excel
                excelApp.Quit();
            }

    work great for me in my web application with a little change it was not copying image to clipboard

    Thread thread = new Thread(() =>
                    {
                        foreach (var pic in ws.Pictures())
                        {
                            if (pic != null)
                            {
                                //This code will detect what the region span of the image was
                                int startCol = pic.TopLeftCell.Column;
                                int startRow = pic.TopLeftCell.Row;
                                int endCol = pic.BottomRightCell.Column;
                                int endRow = pic.BottomRightCell.Row;
                                pic.CopyPicture(XlPictureAppearance.xlScreen, XlCopyPictureFormat.xlBitmap);
                                if (Clipboard.GetDataObject() != null)
                                {
                                    Image img = Clipboard.GetImage();
                                }
                            }
                        }
                    });
                    thread.SetApartmentState(ApartmentState.STA);
                    //Set the thread to STA
                    thread.Start();
                    thread.Join();
  • 相关阅读:
    Linux-Deepin下搭建云笔记
    MySQL-脏页的刷新机制
    网络编程-Netty-writeAndFlush方法原理分析 以及 close以后是否还能写入数据?
    MySQL-SQL调优-引擎选错索引或者不使用索引分析 和 字符串加索引的方式思考
    字体的一些属性
    css清除浮动大全,共8种方法
    WEB前端开发人员须知的常见浏览器兼容问题及解决技巧
    区别各种IE浏览器和火狐的css写法
    IE和火狐浏览器对css解析的不一致
    使用photowap插件
  • 原文地址:https://www.cnblogs.com/lee2011/p/10656178.html
Copyright © 2011-2022 走看看