You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将含图片的HTML字符串正确写入Excel单元格并显示图片?

如何将含图片的HTML字符串正确写入Excel单元格(Aspose实现)

原始HTML字符串

string htmlString = "<img src=\"https://dev.azure.com/hungtrinh25197/ffda2280-d6d0-45d9-80ce-14da52703545/_apis/wit/attachments/d3fc19e0-5e4b-42b6-9759-734a366c777b?fileName=image.png\" alt=Image><br><div><b>ádasdasd<br><br><br><i><b style=\"box-sizing:border-box;\">ádasdasd</b><b style=\"box-sizing:border-box;\">ádasdasd</b><b style=\"box-sizing:border-box;\">ádasdasd </b><b style=\"box-sizing:border-box;\">ádasdasd</b><b style=\"box-sizing:border-box;\">ádasdasd</b></i><br></b></div>";

问题说明

使用Aspose的sheet.Cells["A1"].HtmlString = htmlString;方法无法正确显示HTML中的图片和完整格式,需要实现同时展示文本格式与图片的效果。

解决方案

Aspose的HtmlString属性仅支持解析文本相关的HTML格式,对<img>标签的支持不足,因此需要分离处理文本格式和图片插入:

步骤1:提取纯文本HTML内容

将原始HTML中的<img>标签分离,保留剩余文本格式部分,用于设置单元格的富文本。

步骤2:设置单元格文本格式

用处理后的纯文本HTML设置单元格的HtmlString属性,实现文本的加粗、换行等格式。

步骤3:单独插入图片

下载图片资源,将其插入到工作表中,并调整图片的位置、大小,使其与目标单元格对齐,同时调整行高以容纳图片和文本。

完整代码示例

using Aspose.Cells;
using System.IO;
using System.Net;

// 原始HTML字符串
string htmlString = "<img src=\"https://dev.azure.com/hungtrinh25197/ffda2280-d6d0-45d9-80ce-14da52703545/_apis/wit/attachments/d3fc19e0-5e4b-42b6-9759-734a366c777b?fileName=image.png\" alt=Image><br><div><b>ádasdasd<br><br><br><i><b style=\"box-sizing:border-box;\">ádasdasd</b><b style=\"box-sizing:border-box;\">ádasdasd</b><b style=\"box-sizing:border-box;\">ádasdasd </b><b style=\"box-sizing:border-box;\">ádasdasd</b><b style=\"box-sizing:border-box;\">ádasdasd</b></i><br></b></div>";

// 分离图片标签与文本HTML内容
int imgStartIndex = htmlString.IndexOf("<img");
int imgEndIndex = htmlString.IndexOf(">", imgStartIndex) + 1;
string textOnlyHtml = htmlString.Remove(imgStartIndex, imgEndIndex - imgStartIndex);

// 初始化Workbook和Worksheet
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
Cell targetCell = sheet.Cells["A1"];

// 设置单元格的文本格式
targetCell.HtmlString = textOnlyHtml;

// 下载图片并插入到工作表
using (WebClient webClient = new WebClient())
{
    // 若图片URL需要认证,需在此添加请求头,例如webClient.Headers.Add("Authorization", "Bearer token");
    byte[] imageData = webClient.DownloadData("https://dev.azure.com/hungtrinh25197/ffda2280-d6d0-45d9-80ce-14da52703545/_apis/wit/attachments/d3fc19e0-5e4b-42b6-9759-734a366c777b?fileName=image.png");
    
    using (MemoryStream imageStream = new MemoryStream(imageData))
    {
        // 在目标单元格位置插入图片
        int pictureIndex = sheet.Pictures.Add(targetCell.Row, targetCell.Column, imageStream);
        Picture insertedPic = sheet.Pictures[pictureIndex];
        
        // 调整图片位置与单元格对齐
        insertedPic.Left = targetCell.Left;
        insertedPic.Top = targetCell.Top;
        
        // 限制图片宽度不超过列宽(可根据需求调整)
        insertedPic.Width = sheet.Cells.Columns[targetCell.Column].WidthInch * 96; // 96DPI转换
        
        // 调整行高以容纳图片和文本
        sheet.Cells.Rows[targetCell.Row].Height = insertedPic.Height + targetCell.Height;
    }
}

// 保存Excel文件
workbook.Save("FormattedOutput.xlsx");

注意事项

  • 若图片URL需要身份认证,需在WebClient中添加对应的请求头(如Bearer Token)以获取图片资源。
  • 图片的大小和位置可根据实际需求进一步调整,确保与文本内容的排版协调。
  • 需确保项目中已正确引用Aspose.Cells NuGet包。

内容的提问来源于stack exchange,提问作者Hưng Trịnh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 20:36:01