のセルの背景色を変更します。どのように私はOpenXMLを使用して達成することができます任意のアイデア?私はある特定のセル(columnName + rowIndex)の変更だけを達成しましたが、値が "変更"であるすべてのセルでは達成できませんでした。は、私は、テキスト「変更」で、すべてのセルの背景色を変更する必要がエクセル
はそれがOpenXMLのでなんとかですか私は別のアプローチを使用する必要がありますか?
のセルの背景色を変更します。どのように私はOpenXMLを使用して達成することができます任意のアイデア?私はある特定のセル(columnName + rowIndex)の変更だけを達成しましたが、値が "変更"であるすべてのセルでは達成できませんでした。は、私は、テキスト「変更」で、すべてのセルの背景色を変更する必要がエクセル
はそれがOpenXMLのでなんとかですか私は別のアプローチを使用する必要がありますか?
あなたが一致する各ルールのConditionalFormattingRule
sを追加し、ConditionalFormatting
クラスを使用して条件付き書式を作成することができます。
コレクションに追加する必要があるフォーマットは、DifferentialFormat
で定義する必要があります。
セルは「変更」が含まれている場合、次のコードは、赤い背景の条件付き書式で新しいスプレッドシートを作成します。条件付き書式が機能していることを示すために、セルA1:J20に「変更」または「a」のいずれかを入力します。
public static void CreateConditionalWorkbook(string filepath)
{
using (SpreadsheetDocument document = SpreadsheetDocument.
Create(filepath, SpreadsheetDocumentType.Workbook))
{
WorkbookPart workbookPart = document.AddWorkbookPart();
workbookPart.Workbook = new Workbook();
var worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
worksheetPart.Worksheet = new Worksheet();
Sheets sheets = workbookPart.Workbook.AppendChild(new Sheets());
Sheet sheet = new Sheet() { Id = workbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "Sheet" };
sheets.Append(sheet);
workbookPart.Workbook.Save();
var sheetData = worksheetPart.Worksheet.AppendChild(new SheetData());
WorkbookStylesPart stylesPart = workbookPart.AddNewPart<WorkbookStylesPart>();
stylesPart.Stylesheet = new Stylesheet();
Fills fills = new Fills() { Count = 1U };
DifferentialFormats differentialFormats = new DifferentialFormats() { Count = (UInt32Value)1U };
ConditionalFormatting conditionalFormatting = new ConditionalFormatting() { SequenceOfReferences = new ListValue<StringValue>() { InnerText = "A1:XFD1048576" } };
DifferentialFormat differentialFormat = new DifferentialFormat();
Fill fill = new Fill();
PatternFill patternFill = new PatternFill();
BackgroundColor backgroundColor = new BackgroundColor() { Rgb = new HexBinaryValue() { Value = "ff0000" } };
patternFill.Append(backgroundColor);
fill.Append(patternFill);
differentialFormat.Append(fill);
differentialFormats.Append(differentialFormat);
Formula formula1 = new Formula();
formula1.Text = "\"Change\"";
ConditionalFormattingRule conditionalFormattingRule = new ConditionalFormattingRule()
{
Type = ConditionalFormatValues.CellIs,
FormatId = 0U,
Priority = 1,
Operator = ConditionalFormattingOperatorValues.Equal
};
conditionalFormattingRule.Append(formula1);
conditionalFormatting.Append(conditionalFormattingRule);
worksheetPart.Worksheet.Append(conditionalFormatting);
stylesPart.Stylesheet.Append(differentialFormats);
Random r = new Random();
for (uint rowId = 1; rowId <= 20; rowId++)
{
Row row = new Row() { RowIndex = rowId };
for (int cellId = 0; cellId < 10; cellId++)
{
Cell cell = new Cell();
cell.CellReference = string.Format("{0}{1}", (char)(65 + cellId), rowId);
cell.DataType = CellValues.String;
cell.CellValue = new CellValue(r.Next(2) % 2 == 0 ? "a" : "Change");
row.Append(cell);
}
sheetData.Append(row);
}
workbookPart.Workbook.Save();
document.Close();
}
}
条件付き書式設定を使用してください。 「条件付き書式設定」、「新規ルール」、「セル値」を「特定のテキスト」に変更したセルのみをフォーマットし、「変更」という語を入力します。塗りつぶしの色を選択して適用し、OKをクリックします。
事は、私は、XMLを受けていると私は、Excelファイルを生成していますということです。したがって、ユーザーがExcelファイルを開くときには、最終形式にする必要があります。だから私はコードでこれを行う必要があります:) – Toni
ああ私の悪い、あなたがそれを必要としていることを理解していないopenxml – dwirony