一千萬個為什麽

搜索

使用OLEDB從Excel文件中檢索圖片

我有一個帶有兩列的Excel工作表,一個是數字,第二列有一個圖片。 我想用oledb連接讀取c#中的這些數據,我可以輕松讀取數字,但是第二列中沒有包含圖片,所以在c#中我只得到第一列。

現在,我該如何閱讀圖片?我想從這個excel表中提取數字和相關圖像。

最佳答案

這是一個較舊的主題,但我想我到目前為止會添加一些代碼。

此示例假定您有一個Windows應用程序,您已將Picturebox放在名為“pictureBox1”上。

它還假定您添加對Excel的引用(Microsoft.Office.Interop.Excel)。

正如傑伊所提到的那樣,圖片與你的工作簿綁定,而不是自己的一部分。您可以使用TopLeftCell和BottomRightCell輕松找到圖像的位置。

現在,你需要編寫一個循環來拉出文檔的所有圖像,但我會把它留給你。

        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();
        }

轉載註明原文: 使用OLEDB從Excel文件中檢索圖片