Можно ли изменить размер шрифта и цвет текста с помощью C # и Powerpoint OpenXML

Я использую openXML и C # для создания слайда PowerPoint, но я не могу понять, как изменить / установить размер и цвет текста. Возможно ли это, и есть ли какие-либо примеры, поскольку я не могу найти их с помощью googling?

Я создаю таблицу (похожую на эту: http://blogs.msdn.com/b/brian_jones/archive/2009/08/13/adding-repeating-data-to-powerpoint.aspx), и я хочу изменить ряд вещей в каждом ячейка (размер шрифта, цвет шрифта, цвет фона ячейки).


person leora    schedule 24.03.2011    source источник
comment
@DustinDavis: Почему этот комментарий был таким, кроме бесполезного шума? Так работает SO, и вам следует знать лучше; это ты не первый раз здесь.   -  person Ken White    schedule 25.03.2011
comment
Не уверен, о чем идет речь в целом о @DustinDavis, но @ooo не могли бы вы взглянуть на код VB.NET? Вы сказали, что все в порядке с заголовком stackoverflow.com/questions/3903142/, но никогда не принимал ответ там, поэтому я не уверен, работает ли ответ в VB.NET для вас или нет.   -  person Todd Main    schedule 25.03.2011
comment
@Otaku - я рад взглянуть на код VB.net, если у вас есть образцы   -  person leora    schedule 25.03.2011
comment
Большой! Пожалуйста, сначала посетите другую ветку и, по крайней мере, дайте мне знать, работает / не работает код для вас, почему, что нужно изменить и т. Д. Тогда я буду рад помочь в этом.   -  person Todd Main    schedule 25.03.2011
comment
@Otaku - ссылка в другой ветке не отвечает на этот вопрос. он просто заменяет существующий текст в жестко закодированных таблицах. Он не управляет форматированием текста.   -  person leora    schedule 25.03.2011
comment
Думаю, я не уверен, почему ты тогда сформулировал это как ответ.   -  person Todd Main    schedule 25.03.2011
comment
@Otaku - в другом потоке мой вопрос сначала касался просто динамического добавления строк в таблицу. Эта ссылка была хорошим началом, которое мне помогло. К сожалению, он не внес никаких изменений в форматирование.   -  person leora    schedule 25.03.2011
comment
извините, я не имел в виду это, когда я просил вас вернуться к нему, я имел в виду stackoverflow.com/questions/3903142/   -  person Todd Main    schedule 25.03.2011
comment
@Otaku - я пометил ДРУГОЙ вопрос как принятый. я все еще не могу изменить размер и цвет шрифта .. любые предложения   -  person leora    schedule 26.03.2011
comment
@ooo: Просто быстрый вопрос перед ответом - хотите ли вы изменить шрифт / цвет для определенного фрагмента текста, абзаца, темы или презентации по умолчанию? у всех очень разные ответы.   -  person Todd Main    schedule 27.03.2011
comment
@Otaku - я создаю таблицу (похожую на эту: blogs.msdn.com/b/brian_jones/archive/2009/08/13/), и я хочу изменить ряд вещей в каждой ячейке (размер шрифта, цвет шрифта , задний цвет ячейки). Возможны ли какие-либо из них ??   -  person leora    schedule 29.03.2011
comment
@ooo: Я смотрел на это еще раз, и вот в чем дело. Это вполне возможно, но, как и другое редактирование текста в DrawingML (это не PresentationML), оно может быть довольно сложным. Боюсь, объяснение будет невероятно длинным, и на его составление уйдет немало времени. Возможно, SDK упростит эту задачу - я не использую SDK, поэтому не уверен. Извините, я больше ничем здесь не могу помочь. Я буду продолжать осматриваться, чтобы узнать, обращался ли кто-нибудь к этому раньше.   -  person Todd Main    schedule 30.03.2011
comment
@Otaku - спасибо за ответ ... я нахожу это немного сумасшедшим, что то, что кажется таким простым (изменение размера и цвета шрифта), является такой сложной задачей, на которую никто не может ответить в Интернете :( ??   -  person leora    schedule 30.03.2011
comment
По умолчанию мне присуждена только половина награды (отдельное спасибо тем, кто проголосовал за мой ответ). Почему вы не присудили кому-то полную сумму? Если вам что-то не понравилось в наших ответах, не могли бы вы прокомментировать их, указав на то, что вас беспокоит? Спасибо.   -  person MikeTeeVee    schedule 25.06.2012
comment
@leora: Привет, я делаю то же самое, т.е. генерирую ppt, но есть одна проблема: исходный код отсутствует в предоставленной вами ссылке. Если вы пришлете мне письмо с образцом кода, то мне тоже подойдет template.ppt. мой идентификатор [email protected]   -  person Satinder singh    schedule 24.01.2014


Ответы (3)


В ваших комментариях указано, что это форматирование предназначено для таблицы внутри слайда PowerPoint.

Предположения
Я предполагаю, что вы уже создали таблицу, строки таблицы, ячейки таблицы и отображаемый текст.
Также предположим, что у вас все работает, и теперь вы хотите добавить форматирование.

Если вы хотите отформатировать текст и ячейки, вы можете сделать это, используя следующее:

//Create the TableCell for the PowerPoint table you are building.
A.TableCell tableCell3 = new A.TableCell();
A.TextBody textBody5 = new A.TextBody();
A.BodyProperties bodyProperties5 = new A.BodyProperties();//Created but not modified.
A.ListStyle listStyle5 = new A.ListStyle();//Created but not modified.
A.Paragraph paragraph5 = new A.Paragraph();

//First Word: "Hello" with Font-Size 60x and Font-Color Green.
A.Run run1 = new A.Run();
A.RunProperties runProperties1 = new A.RunProperties() { Language = "en-US", FontSize = 6000, Dirty = false, SmartTagClean = false };//Set Font-Size to 60px.
A.SolidFill solidFill1 = new A.SolidFill();
A.RgbColorModelHex rgbColorModelHex1 = new A.RgbColorModelHex() { Val = "00B050" };//Set Font-Color to Green (Hex "00B050").
solidFill1.Append(rgbColorModelHex1);
runProperties1.Append(solidFill1);
A.Text text1 = new A.Text();
text1.Text = "Hello";
run1.Append(runProperties1);
run1.Append(text1);

//Second Word: "World" with Font-Size 60x and Font-Color Blue.
A.Run run2 = new A.Run();
A.RunProperties runProperties2 = new A.RunProperties() { Language = "en-US", FontSize = 6000, Dirty = false, SmartTagClean = false };//Set Font-Size to 60px.
A.SolidFill solidFill2 = new A.SolidFill();
A.RgbColorModelHex rgbColorModelHex2 = new A.RgbColorModelHex() { Val = "0070C0" };//Set Font-Color to Blue (Hex "0070C0").
solidFill2.Append(rgbColorModelHex2);
runProperties2.Append(solidFill2);
A.Text text2 = new A.Text();
text2.Text = " World";
run2.Append(runProperties2);
run2.Append(text2);

//This element specifies the text run properties that are to be used if another run is inserted after the last run specified.
//This effectively saves the run property state so that it can be applied when the user enters additional text.
//If this element is omitted, then the application can determine which default properties to apply.
//It is recommended that this element be specified at the end of the list of text runs within the paragraph so that an orderly list is maintained.
//  Source: http://msdn.microsoft.com/en-us/library/documentformat.openxml.drawing.endparagraphrunproperties.aspx
//Set the default formatting for words entered after "Hello World" with Font-Size 60x and Font-Color Blue.
A.EndParagraphRunProperties endParagraphRunProperties5 = new A.EndParagraphRunProperties() { Language = "en-US", FontSize = 6000, Dirty = false };//Set Font-Size to 60px.
A.SolidFill solidFill3 = new A.SolidFill();
A.RgbColorModelHex rgbColorModelHex3 = new A.RgbColorModelHex() { Val = "0070C0" };//Set Font-Color to Blue (Hex "0070C0").
solidFill3.Append(rgbColorModelHex3);
endParagraphRunProperties5.Append(solidFill3);

paragraph5.Append(run1);//Append Run: "Hello".
paragraph5.Append(run2);//Append Run: " World".
paragraph5.Append(endParagraphRunProperties5);//Append formmatting for any text the user may enter after the words "Hello World".
textBody5.Append(bodyProperties5);//Created but not modified.
textBody5.Append(listStyle5);//Created but not modified.
textBody5.Append(paragraph5);//Append Paragraph: "Hello World"

//TableCell Properties.  Set Background-Color to Red (Hex "FF0000").
A.TableCellProperties tableCellProperties3 = new A.TableCellProperties();
A.SolidFill solidFill4 = new A.SolidFill();
A.RgbColorModelHex rgbColorModelHex4 = new A.RgbColorModelHex() { Val = "FF0000" };//Red Background for Single TableCell.
solidFill4.Append(rgbColorModelHex4);
tableCellProperties3.Append(solidFill4);//Append Red Background.

tableCell3.Append(textBody5);
tableCell3.Append(tableCellProperties3);

Я обманул и использовал "Open XML SDK 2.0 Productivity Tool для Microsoft Office ".
Я просто создал новый файл PowerPoint, добавил таблицу и отредактировал 3-ю ячейку.
Затем я запустил инструмент SDK и отразил код на" [] / ppt / presentation.xml ".
Я добавил комментарии к отраженному коду, чтобы вы могли его лучше понять.

person MikeTeeVee    schedule 20.06.2012

Как заметил другой пользователь, это возможно в ML. Вот решение, которое я использовал для решения этой проблемы:

// Assume we are adding a A.TableCell to A.TableRow...
A.TableCell tc = new A.TableCell(
new A.TextBody(
new A.BodyProperties(),
new A.Paragraph(new A.Run( 
// -> Add the RunProperties as additional Element to A.Run constructor:
new A.RunProperties() { FontSize = 600 }, new A.Text("some text") ) ) ),
new A.TableCellProperties() );

// Now add the cell to a A.TableRow instance...

При создании ячейки A.TableCell для добавления к строке A.Table я добавил элемент RunProperty в A.Run, вложив A.Text для ячейки, и создал его экземпляр с соответствующим установленным атрибутом FontSize: { FontSize = 600 }.

Надеюсь, это кому-то поможет.

person Paully    schedule 12.01.2012

Когда у вас есть объект для пробега или абзаца, которым вы хотите манипулировать, вы можете добавить любой стиль, который хотите, к свойствам пробега или абзаца.

person emd    schedule 23.12.2011