如何在asp.net中从gridview导出图像到excel?

时间:2017-11-22 07:49:00

标签: c# asp.net excel gridview datagridviewimagecolumn

我有一个ASPxGridView由一个图像列组成。单击ExportToPDF时,图像以pdf显示。但是,如果我单击ExportToXls,图像不会显示在Excel中。问题是什么 ? 我在Visual Studio中使用Devexpress 14.2。 附: = 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>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

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;
    }
}