将href添加到Excel Export C#

Thirdletter_CutsClean

我需要有关此问题的帮助,我正在将数据表导出到可以正常工作的excel文件中。问题是我试图使列之一成为文档的超链接,但是当它开始建立excel文件时,出现此错误。预先感谢您的帮助。

“相对URI不支持此操作。”

using OfficeOpenXml;
using OfficeOpenXml.Table;

public void ExportExcelFile(System.Data.DataTable excelData, string excelSheetName)
    {
        using (var package = new ExcelPackage())
        {
            ExcelWorksheet ws = package.Workbook.Worksheets.Add(excelSheetName);

            int rowCount = 1;
            foreach (DataRow rw in excelData.Rows)
            {
                //excelData.Columns.RemoveAt(0);
                rowCount += 1;
                for (int i = 1; i < excelData.Columns.Count + 1; i++)
                {
                    // Add the header the first time through 
                    if (rowCount == 2)
                    {
                        ws.Row(1).Style.Font.Bold = true;
                        ws.Cells[1, i].Value = excelData.Columns[i - 1].ColumnName;
                    }
                    ws.Column(i).AutoFit();

                    //THIS IS THTE PROBLEM
                    string hyperlink = "<a href='~/Documents/DownloadFile.aspx?id=" + rw["DocPk"].ToString() + "'>" + rw["Drawing Id"].ToString() + "</a>";
                    ws.Cells[i, 7].Hyperlink = new Uri(hyperlink, UriKind.RelativeOrAbsolute);  

                    ws.Cells[rowCount, i].Value = rw[i - 1].ToString();
                }
            }

            MemoryStream Result = new MemoryStream();
            package.SaveAs(Result);
            Response.ClearContent();
            Response.OutputStream.Write(Result.GetBuffer(), 0, Result.GetBuffer().Length);
            Response.OutputStream.Flush();
            Response.OutputStream.Close();
            byte[] byteArray = Result.ToArray();
            Response.AddHeader("Content-Disposition", "attachment; filename=" + excelSheetName + ".xlsx");
            Response.AddHeader("Content-Length", byteArray.Length.ToString());
            Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
            Response.BinaryWrite(byteArray);
            Response.End();
        }
    }
迈克·克里斯滕森

Excel根本不支持相对URL,因为Excel文档没有相对于的URL 您需要完全限定所有URL:

string hyperlink = String.Format("http://{0}/Documents/DownloadFile.aspx?id={1}",
   Page.Request.Url.Host,
   rw["DocPk"].ToString());

ws.Cells[rowCount, i].Hyperlink = new Uri(hyperlink, UriKind.Absolute);
ws.Cells[rowCount, i].Value = rw["Drawing Id"];

请注意完全限定的URL,其中包含http://UriKind.Absolute

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用对象将公式添加到Excel C#

来自分类Dev

C# 将内容添加到 Excel 工作表

来自分类Dev

如何使用C#将Datagridview添加到现有的Excel文件中

来自分类Dev

如何使用C#将Datagridview添加到现有的Excel文件中

来自分类Dev

如何使用C#将Datagridview添加到现有的Excel文件中

来自分类Dev

如何使用C#将超链接添加到Excel Shape?

来自分类Dev

使用C#添加到Excel文件

来自分类Dev

将VB文件添加到C#项目中

来自分类Dev

C#将XMLNode添加到XMLNodeList

来自分类Dev

将树结构递归添加到列表C#

来自分类Dev

将代理添加到PhantomJSDriver(Selenium C#)

来自分类Dev

将视图添加到rootframe c#/ xaml

来自分类Dev

C#将方案添加到URI

来自分类Dev

C#将项目添加到ObjectListView

来自分类Dev

将轴名称添加到图表C#

来自分类Dev

从C#代码将ListBox添加到DataTemplate

来自分类Dev

[UWP] [C#]将文本添加到RichTextBlock

来自分类Dev

c#将行添加到datagrid组合框

来自分类Dev

c#将新条目添加到Json文件

来自分类Dev

将列表添加到列表Linq C#

来自分类Dev

C#将项目添加到列表

来自分类Dev

C#将项目添加到列表

来自分类Dev

WinForms C#将列表添加到类Object

来自分类Dev

将Windows Media Player添加到C#程序

来自分类Dev

将Ninject添加到旧版项目C#

来自分类Dev

将树结构递归添加到列表C#

来自分类Dev

C#将XMLNode添加到XMLNodeList

来自分类Dev

将c#数组添加到数组列表

来自分类Dev

如何使用C#将ImageButton添加到标签