excel - 在 VF 页面中导出 Excel - 使用动态图像 URL 时图像未显示
问题描述
我正在将 VF 页面导出为 Excel 文档。当我导出 excel 文件时,图像单元格包含空白数据。下面是我的 VF 页面代码。如果我使用静态 url ( <img alt="Image" src="https://myorgurl/resource/DefaultProfileImage" />
) 而不是动态图像 url,它工作正常。
<apex:page controller="Users_Profile" contentType="application/vnd.ms-excel#Users.xls">
<table border="0" cellspacing="0" cellpadding="0" style="width:100%;">
<thead>
<tr>
<th>Profile Image</th>
<th>Name</th>
<th>City</th>
<th>State</th>
</tr>
</thead>
<tbody>
<apex:repeat value="{!lstUsers}" var="user">
<tr>
<td>
<image alt="Image" src="{!BaseUrl}{!URLFOR($Resource.DefaultProfileImage)}" />
</td>
<td>{!user.Name}</td>
<td>{!user.City__c}</td>
<td>{!user.State__c}</td>
</tr>
</apex:repeat>
</tbody>
</table>
我已经尝试在 VF 页面中使用 XML 结构而不是 HTML 标记来解决这个问题,但它不起作用。
解决方案
仅当“浏览器”成功登录到 Salesforce 时,静态资源才会显示正常。我的意思是想一想,像https://eu1.salesforce.com/resources/DefaultProfileImage
. Excel 无法下载图像。在隐私浏览(隐身模式)中转到您的图像的 url,在您登录之前它不会显示 OK。这类似于使用资源或 VF 页面生成带有图像的 PDF 的电子邮件模板。
您需要将图像上传到 Documents(切换到 SF Classic UI),勾选“外部可用图像”复选框,生成的链接将如下所示https://instance.content.force.com/servlet/servlet.ImageServer?id=015...&oid=00D...
。这在全球范围内是独一无二的,它包含您的组织 ID 和文档记录的 ID。
您还可以将图像上传到其他地方(Heroku?),在 Salesforce 或社区中创建站点并将其作为公共 url 引用......基本上任何使图像可用而无需登录的东西。
推荐阅读
- java - 使用docker和java spring时keycloak认证问题
- android - 无法从 createBestAvailableBackgroundScheduler 的方法中找到 androidx 的类 - Android
- css - 何时在 css 中使用 width % 和 vw
- raspberry-pi - 树莓派 4 上的 UART
- arrays - JSON字符串数组的访问成员
- aws-lambda - chrome-aws-lambda 渲染图像与 chrome 不同
- python-3.x - Azure Functions HTTP 触发器:如何将异常从 python 工作日志返回给 API 调用者
- react-native - React Native 中的 ref 未定义
- sparql - SPARQL 基于语义数据的自定义表示
- c# - 浏览器控件不显示文档流中的内容