Я просмотрел несколько постов, чтобы изменить конкретный цвет текста (ячейки), но не смог этого понять.Есть ли простой способ сделать это?Я просто хочу изменить цвет определенного текста (ячейки) в OpenXML Вот мой код:
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
private void HighlightDoc()
{
byte[] byteArray = File.ReadAllBytes(@"C:\TestArea\Destination\SUP000011\ATM-1B4L2KQ0ZE0-0001\TestExcel.xlsx");
using (MemoryStream ms = new MemoryStream())
{
ms.Write(byteArray, 0, (int)byteArray.Length);
using (SpreadsheetDocument doc = SpreadsheetDocument.Open(ms, true))
{
Sheet sheet = doc.WorkbookPart.Workbook.Descendants<Sheet>().First<Sheet>();
Worksheet worksheet = ((WorksheetPart)doc.WorkbookPart.GetPartById(sheet.Id)).Worksheet;
IEnumerable<DocumentFormat.OpenXml.Spreadsheet.Row> allRows = worksheet.GetFirstChild<SheetData>().Descendants<DocumentFormat.OpenXml.Spreadsheet.Row>();
foreach (DocumentFormat.OpenXml.Spreadsheet.Row currentRow in allRows)
{
IEnumerable<DocumentFormat.OpenXml.Spreadsheet.Cell> allCells = currentRow.Descendants<DocumentFormat.OpenXml.Spreadsheet.Cell>();
foreach (DocumentFormat.OpenXml.Spreadsheet.Cell currentCell in allCells)
{
CellValue currentCellValue = currentCell.GetFirstChild<CellValue>();
string data = null;
if (currentCell.DataType != null)
{
if (currentCell.DataType == CellValues.SharedString) // cell has a cell value that is a string, thus, stored else where
{
data = doc.WorkbookPart.GetPartsOfType<SharedStringTablePart>().FirstOrDefault().SharedStringTable.ElementAt(int.Parse(currentCellValue.Text)).InnerText;
if (data == "John")
{
//Code to change cell colour
}
}
}
else
{
data = currentCellValue.Text;
}
}
}
}
// Convert it to byte array
byte[] bytesInStream = ms.ToArray();
if (bytesInStream != null)
{
Response.AppendHeader("content-disposition",
"inline; filename=" + "yourExcelFileName.xlsx");
Response.AddHeader("content-length", bytesInStream.Length.ToString());
Response.BinaryWrite(bytesInStream);
Response.End();
}
}
}