Как экспортировать изображения, чтобы отличиться от gridview в asp.net?

У меня ASPxGridView состоит из столбца изображения. Когда я нажимаю ExportToPDF, изображения отображаются в формате PDF. Но если я нажимаю ExportToXls, изображения не отображаются в Excel. В чем проблема? Я использую Devexpress 14.2 в визуальной студии. PS = Изображения в gridview имеют разные размеры.

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <table>
            <tr>
                <td style="padding-right: 4px">
                    <dx:ASPxButton ID="btnPdfExport" runat="server" Text="Export to PDF" OnClick="btnPdfExport_Click" />
                </td>
                <td style="padding-right: 4px">
                    <dx:ASPxButton ID="btnXlsExport" runat="server" Text="Export to XLS" OnClick="btnXlsExport_Click" />
                </td>
                <td style="padding-right: 4px">
                    <dx:ASPxButton ID="btnXlsxExport" runat="server" Text="Export to XLSX" OnClick="btnXlsxExport_Click" />
                </td>
                <td style="padding-right: 4px">
                    <dx:ASPxButton ID="btnRtfExport" runat="server" Text="Export to RTF" OnClick="btnRtfExport_Click" />
                </td>
                <td>
                    <dx:ASPxButton ID="btnCsvExport" runat="server" Text="Export to CSV" OnClick="btnCsvExport_Click" />
                </td>
            </tr>
        </table>
        <dx:ASPxGridView ID="Grid" runat="server" AutoGenerateColumns="False" DataSourceID="XmlDataSource1">
                <Columns>
                <dx:GridViewDataTextColumn FieldName="Common_Name" Caption="Common name" />
                <dx:GridViewDataTextColumn FieldName="Species_Name" Caption="Species name" />
                <dx:GridViewDataImageColumn FieldName="ImagePath" Caption="Image">
                    <PropertiesImage>
                        <ExportImageSettings Width="180" Height="120" />
                    </PropertiesImage>
                </dx:GridViewDataImageColumn>
            </Columns>
            <SettingsPager PageSize="30" />
        </dx:ASPxGridView>
        
        <dx:ASPxGridViewExporter ID="GridExporter" runat="server" GridViewID="Grid" OnRenderBrick="GridExporter_RenderBrick" />


        <asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/Intranet/denemebru/Fishes.xml" />
    </form>
</body>
</html>

1 ответ

public partial class Intranet_denemebru_RaporDeneme2 : System.Web.UI.Page
{
    protected void GridExporter_RenderBrick(object sender, ASPxGridViewExportRenderingEventArgs e)
    {
        var dataColumn = e.Column as GridViewDataColumn;
        if (dataColumn != null && dataColumn.FieldName == "ImagePath" && e.RowType == GridViewRowType.Data)
            e.ImageValue = GetImageBinaryData(e.Value.ToString());
    }

    protected void btnPdfExport_Click(object sender, EventArgs e)
    {
        GridExporter.WritePdfToResponse();
    }
    protected void btnXlsExport_Click(object sender, EventArgs e)
    {
        GridExporter.WriteXlsToResponse();
    }
    protected void btnXlsxExport_Click(object sender, EventArgs e)
    {
        GridExporter.WriteXlsxToResponse();
    }
        byte[] GetImageBinaryData(string relativePath)
    {
        string path = Server.MapPath(relativePath);
        return File.Exists(path) ? File.ReadAllBytes(path) : null;
    }
}
Другие вопросы по тегам