Два значения ячейки с разными стилями в ячейке в OPEN XML SDK 2.0 - PullRequest
1 голос
/ 24 января 2012

Мне было поручено использовать OPEN XML SDK 2.0, и я столкнулся с этой проблемой. Возможно ли иметь разные стили для одного CellValue внутри ячейки, как на картинке ниже:

enter image description here

A: простой текст

B: жирный и подчеркнутый

ПРИМЕЧАНИЕ: мне нужно оба в одной ячейке только спасибо:)

1 Ответ

3 голосов
/ 24 января 2012

Да, это возможно. Одним из способов является форматирование значения, которое будет вставлено в SharedStringTable. Этот фрагмент создаст ваш пример выше:

        // Creates an SharedStringItem instance and adds its children.
        public SharedStringItem GenerateSharedStringItem()
        {
            SharedStringItem sharedStringItem1 = new SharedStringItem();

            Run run1 = new Run();

            RunProperties runProperties1 = new RunProperties();
            Bold bold1 = new Bold();
            Underline underline1 = new Underline();
            FontSize fontSize1 = new FontSize(){ Val = 11D };
            Color color1 = new Color(){ Theme = (UInt32Value)1U };
            RunFont runFont1 = new RunFont(){ Val = "Calibri" };
            FontFamily fontFamily1 = new FontFamily(){ Val = 2 };
            FontScheme fontScheme1 = new FontScheme(){ Val = FontSchemeValues.Minor };

            runProperties1.Append(bold1);
            runProperties1.Append(underline1);
            runProperties1.Append(fontSize1);
            runProperties1.Append(color1);
            runProperties1.Append(runFont1);
            runProperties1.Append(fontFamily1);
            runProperties1.Append(fontScheme1);
            Text text1 = new Text();
            text1.Text = "Project Name:";

            run1.Append(runProperties1);
            run1.Append(text1);

            Run run2 = new Run();

            RunProperties runProperties2 = new RunProperties();
            FontSize fontSize2 = new FontSize(){ Val = 11D };
            Color color2 = new Color(){ Theme = (UInt32Value)1U };
            RunFont runFont2 = new RunFont(){ Val = "Calibri" };
            FontFamily fontFamily2 = new FontFamily(){ Val = 2 };
            FontScheme fontScheme2 = new FontScheme(){ Val = FontSchemeValues.Minor };

            runProperties2.Append(fontSize2);
            runProperties2.Append(color2);
            runProperties2.Append(runFont2);
            runProperties2.Append(fontFamily2);
            runProperties2.Append(fontScheme2);
            Text text2 = new Text(){ Space = SpaceProcessingModeValues.Preserve };
            text2.Text = " ALLAN";

            run2.Append(runProperties2);
            run2.Append(text2);

            sharedStringItem1.Append(run1);
            sharedStringItem1.Append(run2);
            return sharedStringItem1;
        }

Вы можете вставить это в SharedStringTable, а затем установить значение ячейки в качестве индекса в SharedStringTable, где это было вставлено.

Могут быть и другие ссылки, которые я забыл включить, которые могут быть определены в StylesPart. Я рекомендую создать этот пример в чистом документе Excel, а затем использовать Open XML Productivity Tool для просмотра XML. Инструмент также предоставит вам код, который я предоставил вам выше. Это должно дать вам общее руководство о том, куда идти дальше.

...