首页 > 编程语言 >C# 保持比例缩放图片大小,显示到Excel中

C# 保持比例缩放图片大小,显示到Excel中

时间:2025-01-23 16:30:29浏览次数:3  
标签:缩放 C# image Excel System cell excelPicture

要在C#中保持图片的比例缩放,并将其显示到Excel中,你可以使用以下步骤:

  1. 加载图片并计算缩放比例

    • 使用System.Drawing.Image类加载图片。
    • 计算图片缩放比例以适应Excel单元格的大小,同时保持图片的宽高比。
  2. 插入图片到Excel

    • 使用Microsoft.Office.Interop.Excel库将图片插入到Excel工作表中。

以下是一个示例代码,展示了如何实现这一功能:


csharp

using System;
using System.Drawing;
using Microsoft.Office.Interop.Excel;

class Program
{
    static void Main(string[] args)
    {
        // 创建Excel应用程序实例
        Application excelApp = new Application();
        Workbook workbook = excelApp.Workbooks.Add();
        Worksheet worksheet = workbook.Sheets[1];

        // 加载图片
        string imagePath = @"C:\path\to\your\image.jpg";
        Image image = Image.FromFile(imagePath);

        // 定义Excel单元格的范围
        Range cell = worksheet.Range["A1"];
        float cellWidth = (float)cell.Width;
        float cellHeight = (float)cell.Height;

        // 计算缩放比例
        float scaleFactor = Math.Min(cellWidth / image.Width, cellHeight / image.Height);

        // 计算缩放后的图片尺寸
        int scaledWidth = (int)(image.Width * scaleFactor);
        int scaledHeight = (int)(image.Height * scaleFactor);

        // 插入图片到Excel
        Picture excelPicture = worksheet.Pictures.Insert(imagePath);
        excelPicture.Left = cell.Left;
        excelPicture.Top = cell.Top;
        excelPicture.Width = scaledWidth;
        excelPicture.Height = scaledHeight;

        // 保存并关闭Excel文件
        workbook.SaveAs(@"C:\path\to\your\output.xlsx");
        workbook.Close();
        excelApp.Quit();

        // 释放资源
        System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
        System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
        System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
        System.Runtime.InteropServices.Marshal.ReleaseComObject(cell);
        System.Runtime.InteropServices.Marshal.ReleaseComObject(excelPicture);
    }
}

注意事项:

  • 确保你已经安装了Microsoft.Office.Interop.Excel库。可以通过NuGet包管理器安装:
     
    Install-Package Microsoft.Office.Interop.Excel

  • 路径C:\path\to\your\image.jpgC:\path\to\your\output.xlsx需要替换为你实际的文件路径。
  • 这段代码假设Excel单元格的宽度和高度是以Excel内部单位(通常是1/72英寸)来表示的。如果需要更精确的控制,可能需要进一步调整代码。

标签:缩放,C#,image,Excel,System,cell,excelPicture
From: https://blog.csdn.net/u010117029/article/details/145325365

相关文章

  • CMS如何直接把WORD图片上传到服务器中
    要求:开源,免费,技术支持编辑器:百度ueditor前端:vue2,vue3,vue-cli,react,html5需求:复制粘贴word内容图片,word图片转存交互,导入pdf,导入PowerPoint(PPT),web截屏用户体验:Ctrl+V快捷键操作平台:Windows,macOS,Linux,RedHat,CentOS,Ubuntu,中标麒麟,银河麒麟,统信UOS,信创国......
  • 【Rust自学】14.5. cargo工作空间(Workspace)
    喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(=・ω・=)14.4.1.为什么需要cargoworkspace假如说我们构建了一个二进制crate,里面既有library又有库。随着项目规模不断增长,库crate可能不断变大。在这种情况下通常会把它拆......
  • 【Rust自学】14.6. 安装二进制crate
    喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(=・ω・=)14.6.1.从cratea.io安装二进制crate通过cargo_install命令可以从crates.io安装二进制crate。这并不是为了替换系统包,它应该是Rust开发人员安装其他人共享的工具......
  • 探索JavaScript前端开发:开启交互之门的神奇钥匙(二)
     目录 引言四、事件处理4.1事件类型4.2事件监听器五、实战案例:打造简易待办事项列表5.1HTML结构搭建5.2JavaScript功能实现六、进阶拓展:异步编程与Ajax6.1异步编程概念6.2Ajax原理与使用七、前沿框架:Vue.js入门窥探7.1Vue.js简介7.2基础使用示......
  • GoogleCEO在斯坦福上学的演讲
    原文链接:https://tingxuanr.github.io/note/googleceo在斯坦福上学的演讲/#more原文为什么英伟达能价值两万亿美元?因为几乎所有的AI代码都要使用CUDA优化,而只有英伟达的GPU支持CUDA。另外,很多开源库也只针对CUDA做了优化。AMD现在正在做一个工具把CUDA翻译成AMD自己的语言ROCm......
  • C# 网页截图全攻略:三种技术与 Chrome 路径查找指南
    全局配置stringurl="https://blog.csdn.net/sunshineGGB/article/details/122316754";一、PuppeteerSharp1、安装NuGet搜索安装[PuppeteerSharp]或者在程序包管理器控制台Install-PackagePuppeteerSharp2、核心代码stringhtml=PageSourceCodeHelper.GetWebCode1(url......
  • basecrack使用
    安装basecrack使用python虚环境。创建虚拟环境:使用python3-mvenv<path_to_venv>命令创建虚拟环境,例如python3-mvenvmyenv,这将在当前目录下创建一个名为myenv的虚拟环境目录。激活虚拟环境:Linux/Mac:进入虚拟环境目录,运行sourcebin/activate。Windows:进入虚拟环境......
  • 关于此题[ABC343G] Compress Strings 状压DP的一些总结
    传送门通过这道题也是让我对TSP问题有了更深的理解。首先这道题中给定n个字符串,我们发现n的范围只有20。让我们求这n个字符串作为同一个字符串的子串时,该字符串最短是多少。我们发现,如果有一个字符串被另一个字符串完全包含,那么它对答案是没有影响的,所以我们可以先用哈希标记......
  • 第一讲C++
    第一题LongLoongForapositiveintegerX,theDragonStringoflevelXisastringoflength(X+3)formedbyoneL,Xoccurrencesofo,onen,andonegarrangedinthisorder.YouaregivenapositiveintegerN.PrinttheDragonStringoflevelN.Noteth......
  • YOLO训练自己的分割数据集,使用labelme标注的分割数据集产生的.json文件转化为YOLOv8识
    将labelme标注的分割数据集,转化为YOLOv8识别的.txt文件数据集分为两部分,第一部分先将labelme标注的分割数据集转化为coco格式的文件,第二步,在将coco格式的JSON文件转化为yolo格式的txt文件第一部分:将labelme标注的分割数据集转化为coco格式的文件第一步首先建立一个文件夹myd......