aspose 获取Excel中插入的对象

来源:互联网 发布:大学生兼职数据分析 编辑:程序博客网 时间:2024/06/06 13:06

引入using Aspose.Cells;
aspose.cells.dll的下载地址是http://download.csdn.net/detail/keyrainie/4547523

此demo只是讲出取Excel插入附件的原理,代码较简单
private void AsponseTest()

        {
            Workbook awork = new Workbook(textBox1.Text);
            Worksheet asheet = awork.Worksheets[0];


            Workbook awork2 = new Workbook();
            Worksheet asheet2 = awork2.Worksheets[0];
          
            try
            {
                byte[] imageData = null;
                byte[] objectData = null;
                string sourceFullName = "";
                int upperLeftRow = 0;
                int upperLeftColumn = 0;
                int height = 0;
                int width = 0;
                bool displayAsIcon = false;
                Aspose.Cells.Drawing.OleFileType fileType = Aspose.Cells.Drawing.OleFileType.Xls;

                string progID = "";
//循环的去除插入的对象

                foreach (Aspose.Cells.Drawing.OleObject item in asheet.OleObjects)
                {
                    
                    //获取对象属性,为生成新的Excel插入对象使用
                    imageData = item.ImageData;   //对象图标
                    objectData = item.ObjectData;   //对象内同
                    sourceFullName = item.SourceFullName;
                    upperLeftRow = item.UpperLeftRow;
                    upperLeftColumn = item.UpperLeftColumn;
                    height = item.Height;
                    width = item.Width;
                    displayAsIcon = item.DisplayAsIcon;
                    fileType = item.FileType;

                    progID = item.ProgID;
                    asheet2.OleObjects.Add(upperLeftRow, upperLeftColumn, height, width, imageData);

                    
                    //此功能是读取出一个图片,并另存为
                    MemoryStream outputImage = new MemoryStream(imageData, 0, (int)imageData.Length);
                    Image returnImage = Image.FromStream(outputImage);
                    pictureBox1.Image = returnImage;
                    File.WriteAllBytes(@"C:\Users\ZhangYu\Desktop\2.txt", objectData);
                }

                //生成新的Excel,插入附件,此方法暂时只是举例插入一个对象,若需要插入多个对象,则看情况改逻辑就可以
                foreach (Aspose.Cells.Drawing.OleObject item in asheet2.OleObjects)
                {
                    item.ObjectData = objectData;
                    item.SourceFullName = sourceFullName;
                    item.DisplayAsIcon = displayAsIcon;
                    item.FileType = fileType;
                    item.SetNativeSourceFullName(sourceFullName);
                    item.ProgID = progID;
                }
                int count = asheet.OleObjects.Count;
                awork2.Save(targetPath);

            }
            catch (Exception ex)
            {


            }