哪位知道啊?单元格中的文字可以读出来,但图片无法读取。谁知道这方面的技术?或写出思路。谢谢。

解决方案 »

  1.   

    图片和单元格没有父子关系,你可以试试 Worksheet.Pictures对象.
      

  2.   

    图片和单元格没有父子关系,
    -----------
    这个知道了你可以试试 Worksheet.Pictures对象.
    -------------
    这个试试。
      

  3.   

    你看那存储格式,好象二进制存储,找下书,很Easy的,顶你~~~
      

  4.   

    private string exclePath  = @"E:\111.xls";
    private int StartRow = 2; //读的起始行
    private void button1_Click(object sender, System.EventArgs e)
    {
    Excel.Application excel = new Excel.Application();//引用Excel对象
    Excel.Workbook workbook = excel.Workbooks.Add(exclePath);
    excel.UserControl = true;
    System.Text.StringBuilder sb = new System.Text.StringBuilder();
    excel.Visible = false;
    for (int i = 0; i < workbook.Worksheets.Count; i++)//循环取所有的Sheet.
    {
    Excel.Worksheet sheet = workbook.Worksheets.get_Item(i + 1) as Excel.Worksheet;//从1开始.
    for (int row = StartRow; row <= sheet.UsedRange.Rows.Count; row++)
    {
    //取单元格值;
    for (int col = 1; col <= sheet.UsedRange.Columns.Count; col++)
    {
    Excel.Range range =sheet.Cells[row, col] as Excel.Range;
    sb.Append("," + col.ToString() + ":" + range.Text);
    }
    sb.Append(System.Environment.NewLine);
    //取存图片;
    if(sheet.Shapes.Count > row - StartRow )
    {
    Excel.Shape s = sheet.Shapes.Item(row - StartRow + 1) as Excel.Shape;
    s.CopyPicture(Appearance.Button, Excel.XlCopyPictureFormat.xlBitmap); //COPY到内存。
    IDataObject iData = Clipboard.GetDataObject();
    if (iData.GetDataPresent(DataFormats.Bitmap))
    {
    pictureBox1.Image = (Bitmap)iData.GetData(DataFormats.Bitmap); //从内存取值;
    pictureBox1.Image.Save(string.Format(@"D:\{0}.jpg", row)); //保存。
    }
    else
    {
    pictureBox1.Image = null;
    }
    }
    }
    }
    workbook.Close(false,null,null);
    excel.Quit();
    }过两天结贴。
      

  5.   

    有三个地方不明白:1,”Appearance.Button“是什么?2,Clipboard.GetDataObject() 是啥?
    3,iData.GetDataPresent(DataFormats.Bitmap) 怎么提示错误?  请楼主告诉我把 ?
      

  6.   

    这个在剪贴板上会得到图片,
    if (iData.GetDataPresent(DataFormats.Bitmap))
                    {
                        pictureBox1.Image = (Bitmap)iData.GetData(DataFormats.Bitmap);    //从内存取值;
                        pictureBox1.Image.Save(string.Format(@"D:\{0}.jpg", row));        //保存。
                    }
    这个判断,就会得不到剪贴板上面的图片信息了,如果加一个线程处理,会到得图片信息,但会让程序变得不稳定。
      

  7.   

    这是在winform里面可以 但是在web里面行不通的
      

  8.   

    if (iData.GetDataPresent(DataFormats.Bitmap))
      {
      pictureBox1.Image = (Bitmap)iData.GetData(DataFormats.Bitmap); //从内存取值;
      pictureBox1.Image.Save(string.Format(@"D:\{0}.jpg", row)); //保存。
      }这个是回去粘贴在Excel的图片,但是不能获取到插入的图片。