Excel导出数据添加超链接,打开本地图片


 //将DataTable导出到Excel,并为其中一列添加超链接,点击链接打开本地图片
public static bool Create(DataTable dt, string filePath, bool IsOverWrite = true, bool IsAppendTitle = true, string[] Headers = null, string fileName = "", string blobUrl = "", bool isLinux = false, string contaner = "", string fileUrl = "") { try { dt ??= new DataTable(); //创建Excel文件的对象 var book = new HSSFWorkbook(); //添加一个sheet var sheet1 = book.CreateSheet("Sheet1"); #region //书写标题 if (IsAppendTitle) { if (Headers == null || Headers.Length == 0) { Headers = dt.GetColumnNames().ToArray(); } //给sheet1添加第一行的头部标题 var row1 = sheet1.CreateRow(0); for (var i = 0; i < Headers.Length; i++) { row1.CreateCell(i).SetCellValue(Headers[i]); } } #endregion #region //填充数据 var k = IsAppendTitle ? 1 : 0; for (var i = 0; i < dt.Rows.Count; i++) { //创建数据行 var rowtemp = sheet1.CreateRow(k); rowtemp.CreateCell(0).SetCellValue((k).ToString()); k++; //填充数据 for (var j = 0; j < dt.Columns.Count; j++) { var value = dt.Rows[i][j].ToString(); var cell = rowtemp.CreateCell(j); var name = dt.Columns[j].ColumnName;
               //需要添加超链接的列
if (name == "FILEPATH") {
                 //网络图片下载到本地 value
= DownlodImg(value);
                 //添加超链接
var link = new HSSFHyperlink(HyperlinkType.File) { Address = value }; cell.Hyperlink = link; } cell.SetCellValue(value); } } #endregion var file = new FileInfo(DoPath.GetFullPath(filePath + fileName)); if (file.Exists && !IsOverWrite) { file.Delete(); } #region //写入文件 using var ms = new MemoryStream(); book.Write(ms); ms.Seek(0, SeekOrigin.Begin); using var fileStream = new FileStream(file.FullName, FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite); var bytes = new byte[ms.Length]; ms.Read(bytes, 0, (int)ms.Length); fileStream.Write(bytes, 0, bytes.Length); fileStream.Close(); ms.Close(); #endregion file.Refresh(); return file.Exists; } catch (Exception ex) { Console.WriteLine(ex); return false; } }
//网络图片下载到本地
public
static string DownlodImg(string imagePath) { var localPath = @"\ticket\image\"; var filePath = localPath;// AppDomain.CurrentDomain.BaseDirectory + @""; try { var name = imagePath.TrimStart('/').Replace("\\", "/"); var fileUrl = "图片网络地址"; var request = WebRequest.Create(fileUrl); var response = request.GetResponse(); var reader = response.GetResponseStream(); var file = new FileInfo(DoPath.GetFullPath(filePath)); if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } filePath += imagePath[(imagePath.LastIndexOf(@"/", StringComparison.Ordinal) + 1)..] + ".jpg"; var writer = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write); var buff = new byte[1024]; var c = 0; //实际读取的字节数 while (reader != null && (c = reader.Read(buff, 0, buff.Length)) > 0) { writer.Write(buff, 0, c); } writer.Close(); writer.Dispose(); if (reader != null) { reader.Close(); reader.Dispose(); } response.Close(); } catch (Exception ex) { return ""; } return @"..\" + filePath; }

 

文件夹结构

 

 

 

 

 

点击excel中的图片链接会自动打开文件夹中的图片

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM