• 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();
  • 相关阅读:
    php部分---include()与require()的区别、empty()与isset is_null的区别与用法详解
    DataSet 的详细用法(转)
    DataSet 的用法(转)
    大神的博客地址
    c#报表 柱,饼状图
    WebApi 增删改查(2)
    Linq to SQL 的左连,右连,内连(转)
    WebApi 增删改查
    Linq to SQL 的连表查询(转)
    LINQ
  • 原文地址:https://www.cnblogs.com/lee2011/p/10656178.html
Copyright © 2020-2023  润新知