C#向EXCEL插入图片 如何按比例缩放图片

C#向EXCEL插入图片 如何按比例缩放图片,第1张

引用Spire.Xls.dll

using Spire.Xls

namespace ResizeImage

{

    class Program

    {

        static void Main(string[] args)

        {

            //创建Workbook对象

            Workbook workbook = new Workbook()

            //获取第一个工作表

            Worksheet sheet = workbook.Worksheets[0]

            //图片地址

            string picPath = @"C:\Users\Administrator\Desktop\250x250.png"

            //添加图片到指定位置

            ExcelPicture pic = sheet.Pictures.Add(3, 3,picPath)

            //对图片的长宽按50%的比例缩放

            pic.Scale(50, 50)

            //保存文档

            workbook.SaveToFile("output.xlsx", ExcelVersion.Version2013)

        }

    }

}

当然,你也可以使用Workbook.LoadFromFile方法加载一个现成的Excel文档,然后选取工作表上的指定位置插入图片

用StretchBlt函数即可实现,参考代码如下:

void CImgWnd::OnPaint()

{

        CPaintDC dc(this) // device context for painting

        //获得窗口大小

        CRect r

        GetClientRect(&r)

        //填充背景

        HBRUSH brush = (HBRUSH)::GetStockObject(GRAY_BRUSH)

        ::FillRect(dc.m_hDC,&r,brush)

        dc.SetStretchBltMode(HALFTONE)

        //将位图选进设备场景中

        CDC memdc

        memdc.CreateCompatibleDC( &dc )

        CBitmap* pOldBmp= memdc.SelectObject(&m_bmpImage)

        //获得位图参数

        BITMAP bmp

        m_bmpImage.GetBitmap(&bmp)

        //开始缩放

        switch(m_nStrechType)

        {

        case STRECH_1_1://1:1

                        dc.BitBlt(r.left,r.top,r.Width(),r.Height(),&memdc,0,0,SRCCOPY)

                break

        case STRECH_FULL_X://按宽度

                dc.StretchBlt(r.left,r.top,r.Width(),bmp.bmHeight,&memdc,0,0,

                        bmp.bmWidth,bmp.bmHeight,SRCCOPY)

                break

        case STRECH_FULL_Y://按高度

                dc.StretchBlt(r.left,r.top,bmp.bmWidth,r.Height(),&memdc,0,0,

                        bmp.bmWidth,bmp.bmHeight,SRCCOPY)

                break

        case STRECH_FULL://充满窗口

                dc.StretchBlt(r.left,r.top,r.Width(),r.Height(),&memdc,0,0,

                        bmp.bmWidth,bmp.bmHeight,SRCCOPY)

                break

        case STRECH_CENTER://居中显示,大小为窗口的一半

                dc.StretchBlt(r.Width()/4,r.Height()/4,r.Width()/2,r.Height()/2,&memdc,0,0,

                        bmp.bmWidth,bmp.bmHeight,SRCCOPY)

                break

        }

        //还原

        memdc.SelectObject(pOldBmp)

}

不如这样,不要压缩包,这样试一试,看看能不能接受这种方法

添加图片文件到工具上,移动图片到工具位置上。

1、移动多个图片为了方便,鼠标选中多个图片一同移动到页面上,压缩选择为输出原格式,缩小压缩。

2、点击开始按钮,按钮在 *** 作页面下面,这个按钮一按就是开弓没有回头箭就只能压缩了,不过还好,保留了原图片。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11903207.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存