Как я могу добавить гиперссылку в openxmlwriter в свой код C#
Привет,
Я извлекаю данные из базы данных и добавляю их в лист Excel, мои данные, как показано ниже:
ID, имя, описание, ссылка на резюме
и уже извлек резюме, чтобы быть в физической папке, и я написал в листе excel данные даже ссылку для резюме в физической папке.
Моя проблема, как я могу сделать эту ссылку кликабельной гиперссылкой.
BR,
А. Рагаб
Что я уже пробовал:
public void WriteEmployeesMetadata(List<Employee> employees) { using (SpreadsheetDocument document = SpreadsheetDocument.Open(spreadsheetDocumentPath, true)) { double maxRowsPerSheet = Constants.maxRowsPerSheet; double numberOfSheets = Math.Ceiling(employees.Count / maxRowsPerSheet); int maxRowsPerSheetParam = int.Parse(maxRowsPerSheet.ToString()); List<Employee> containerEmployeeList = new List<List<Employee>>(); for (int x = 0; x < numberOfSheets; x++) { List<Employee> newEmployee = employees.Skip(x * maxRowsPerSheetParam).Take(maxRowsPerSheetParam).ToList(); containerEmployeeList.Add(newEmployee); } var workbookPart = document.WorkbookPart; var workbook = workbookPart.Workbook = new Workbook(); var sheets = workbook.AppendChild<Sheets>(new Sheets()); for (int i = 0; i < containerEmployeeList.Count; i++) { var worksheetPart = workbookPart.AddNewPart<WorksheetPart>(); var sheet = new Sheet() { Id = workbookPart.GetIdOfPart(worksheetPart), SheetId = (UInt32)i + 1, Name = "Employee " + (i + 1) }; sheets.Append(sheet); using (var writer = OpenXmlWriter.Create(worksheetPart)) { writer.WriteStartElement(new Worksheet()); writer.WriteStartElement(new SheetData()); writer.WriteStartElement(new Row()); int headerIndex = 1; Extensions.InsertHeaderCellsInRow(writer, 1); writer.WriteEndElement(); for (int j = 0; j < containerEmployeeList[i].Count(); j++) { writer.WriteStartElement(new Row()); Extensions.InsertEmployeeCellsInRow(writer, containerEmployeeList[i][j], j + headerIndex + 1); writer.WriteEndElement(); Console.WriteLine(j + 1 + " written with name " + containerEmployeeList[i][j].Number + " from " + containerEmployeeList[i].Count); } writer.WriteEndElement(); writer.WriteEndElement(); writer.Close(); } } } } public static void InsertEmployeeCellsInRow(OpenXmlWriter writer, Employee Employee, int index) { string iDCellReference = Constants.IDColumnName + index; InsertCellInWorksheet(writer, iDCellReference, Employee.ID.ToString()); string nameCellReference = Constants.NameColumnName + index; InsertCellInWorksheet(writer, nameCellReference, Employee.Name.ToString()); string descriptionCellReference = Constants.descriptionColumnName + index; InsertCellInWorksheet(writer, descriptionCellReference, Employee.Description.ToString()); if (!string.IsNullOrEmpty(Employee.PhysicalFileLink)) { string physicalFileLinkCellReference = Constants.PhysicalFileLinkColumnName + index; InsertCellInWorksheet(writer, physicalFileLinkCellReference, Employee.PhysicalFileLink.ToString()); } } public static void InsertCellInWorksheet(OpenXmlWriter writer, string linkTypeCellReference, string cellValue, List<OpenXmlAttribute> attributes = null) { if (attributes == null) { attributes = new List<OpenXmlAttribute>(); } attributes.Add(new OpenXmlAttribute("t", null, "inlineStr")); writer.WriteStartElement(new Cell() { CellReference = linkTypeCellReference }, attributes); writer.WriteElement(new InlineString(new Text(cellValue))); writer.WriteEndElement(); }
Foothill
Я считаю, что эта ссылка может помочь
http://stackoverflow.com/questions/1333772/adding-hyperlinks-in-excel2007-in-c-sharp-within-excel-it-self