рд╣реИрд▓реЛ% рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо%!
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореБрдЭреЗ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдПрдХреНрд╕реЗрд▓ рдРрдб-рдСрди рдбреНрдпреВрдЯреА рдкрд░ рд▓рд┐рдЦрдирд╛ рдкрдбрд╝рд╛ред рд╡реИрд╕реЗ, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, .NET рдХреЗ рддрд╣рдд MS рдСрдлрд┐рд╕ рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдзрд╛рд░рдг рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрдо рд╣реЛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдХрд┐ рдСрдлрд┐рд╕ рдкреНрд░рд╛рдЗрдорд░реА рдЗрдВрдЯрд░реЙрдк рдЕрд╕реЗрдВрдмрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреНрд╕реЗрд▓ рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рдерд╛ред рдФрд░ рдЬрдм рдХрд╛рд░реНрдпрд╛рд▓рдп рдиреЗ Aspose.NET рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрд╕реЗрдВрд╕ рдЦрд░реАрджрд╛, рддреЛ COM рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрд╛рд▓рдп рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдПрдХ рдмреБрд░реЗ рд╕рдкрдиреЗ рдХреА рддрд░рд╣ рднреВрд▓ рдЧрдИ рдереАред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдордЭрджрд╛рд░ рд░реВрд╕реА-рднрд╛рд╖рд╛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреА рдХрдореА рд╕реЗ рдЕрдкреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдерд╛ред рдЕрдм рдореИрдВ рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рднрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдПрдХ рдРрдб-рдЗрди рдмрдирд╛рдПрдВрдЧреЗ, рдПрдХ рдмрдЯрди рдХреЗ рдХреНрд▓рд┐рдХ рдкрд░, рд╡рд░реНрддрдорд╛рди рд╢реАрдЯ рдкрд░ рдЪрд╛рд▓реВ рдорд╛рд╣ рдХреЗ рджрд┐рдиреЛрдВ рдХреА рд╕реВрдЪреА рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рджрд┐рдиреЛрдВ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЗрдЪреНрдЫреБрдХ рдХреГрдкрдпрд╛ рдПрдХ рдХрдЯ рдХреЗ рд▓рд┐рдП рдкреВрдЫреЗрдВ!
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЕрдЧреНрд░рджреВрдд
рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдЦреБрдж рдПрдордПрд╕ рдСрдлрд┐рд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдкреЗрд╢реЗрд╡рд░ рдирд╣реАрдВ рд╣реВрдВ, рдФрд░ рдРрд╕реЗ рд▓реЛрдЧ рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕реНрдорд╛рдЗрдЯрд░реЗрдВрд╕ рдХреЗ рдореЗрд░реЗ рдлреИрд╕рд▓реЗ рдХреА рдЖрд▓реЛрдЪрдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдЦреИрд░, рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рд░рдЪрдирд╛рддреНрдордХ рдЖрд▓реЛрдЪрдирд╛ рдкрд░ рдЦреБрд╢реА рд╣реЛрдЧреАред рд╕рд╛рде рд╣реА, рдпрд╣ рд▓реЗрдЦ рдПрдХреНрд╕реЗрд▓ рдРрдб-рдЗрди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдкреВрд░реНрдг рдЧрд╛рдЗрдб рдирд╣реАрдВ рд╣реИ, рдПрдХреНрд╕реЗрд▓ рдРрдб-рдЗрди рдпрд╛ Microsoft.Office.Core рдирд╛рдо рд╕реНрдерд╛рди рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдПрдХ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рд▓реЗрдЦ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ, рдПрдХ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд╡рд┐рд╖рдп рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ рдФрд░ рдЖрдкрдХреЛ рдРрдб-рдЗрди рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХрд░реЗрдЧрд╛ рдЬреЛ рдХреБрдЫ рд╕рд╛рд░реНрдердХ рдХрд░рддрд╛ рд╣реИред рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИ!
рд╣рдо рд╕рдорд╛рдзрд╛рди рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ
рдЖрдЗрдП рд╕реНрдЯреВрдбрд┐рдпреЛ рдЦреЛрд▓реЗрдВ рдФрд░ рдПрдХреНрд╕реЗрд▓ 2010 рдПрдб-рдЗрди рдЬреИрд╕реА рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВред рдЪрд▓реЛ рдЗрд╕реЗ рдирдореВрдирд╛ рдХрд╣рддреЗ рд╣реИрдВ:

рдпрджрд┐ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рд╕рд╣реА рдирд┐рдХрд▓рд╛ (рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? ..), рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рдзрд╛рди рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЬрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХрдорд╛рддреНрд░ рдлрд╝рд╛рдЗрд▓ ThisAddIn.cs рд╣реИ:
public partial class ThisAddIn { private void ThisAddIn_Startup(object sender, System.EventArgs e) { } private void ThisAddIn_Shutdown(object sender, System.EventArgs e) { } #region VSTO generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InternalStartup() { this.Startup += new System.EventHandler(ThisAddIn_Startup); this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown); } #endregion }
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ - рд╣рдо рдЕрдкрдиреЗ рдРрдб-рдЗрди рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВред рдЕрдм, рдмреЗрд╢рдХ, рд╣рдорд╛рд░рд╛ рдРрдб-рдЗрди рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдл 5 рджрдмрд╛рдХрд░ред рдХреНрдпрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдЖрдк рддреИрдирд╛рддреА рд╕реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрд╡рдпрдВ рдПрдХреНрд╕реЗрд▓ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╕реБрд░рдХреНрд╖рд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдкрд░ рд╣рдорд╛рд░рд╛ рдРрдб-рдЗрди рдмрдВрдж рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЬрдм рдЖрдк рдПрдХреНрд╕реЗрд▓ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рд╢рд┐рд▓рд╛рд▓реЗрдЦ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдПрдБ
рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдЯрд╛рдЗрдк рд░рд┐рдмрди рдХрд╛ рдПрдХ рддрддреНрд╡ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ рдирдореВрдирд╛рдмреНрд░рд┐рдмреЛрди рдХрд╣реЗрдВ

рдбрд┐рдЬрд╛рдЗрдирд░ рдореЗрдВ, рд╡рд╣рд╛рдВ рдмрдЯрди рдЬреЛрдбрд╝реЗрдВ:

рдФрд░ рдЯреИрдм, рд╕рдореВрд╣ рдФрд░ рдмрдЯрди рдХреЗ рдирд╛рдо рд╕реЗрдЯ рдХрд░реЗрдВ:

рдФрд░ рдПрдХ рдмрдЯрди рдХреНрд▓рд┐рдХ рд╣реИрдВрдбрд▓рд░ рднреА рдмрдирд╛рдПрдВ:
public partial class SampleRibbon { private void SampleRibbon_Load(object sender, RibbonUIEventArgs e) { } private void button1_Click(object sender, RibbonControlEventArgs e) { MessageBox.Show("Hello, world!"); } }
рдЖрдЗрдП рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдкрдиреЗ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдПрдХреНрд╕реЗрд▓ рдореЗрдВ рдПрдХ рдмрдЯрди рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдЯреИрдм рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдПрдХ рд╕рдВрджреЗрд╢ рдмреЙрдХреНрд╕ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИред
рдереЛрдбрд╝рд╛ рдЧрд╣рд░рд╛ рдЦреЛрджрдирд╛
рдлрд┐рд▓рд╣рд╛рд▓, рд╣рдореЗрдВ рджреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЕрдЧрд░ ThisAddIn рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝реАрд▓реНрдб рд╣реИ рдЬреЛ рдЪрд▓ рд░рд╣реЗ рдПрдХреНрд╕реЗрд▓ рдЙрджрд╛рд╣рд░рдг рддрдХ рдкрд╣реБрдВрдЪ рджреЗрддрд╛ рд╣реИ, рддреЛ рд░рд┐рдмрди рд╡рд░реНрдЧ рдХреЗ рдкрд╛рд╕ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХреНрд╕реЗрд▓ рд╢реАрдЯ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдмрд╛рддрдЪреАрдд рдХреА рдЬрд╛рдПред рджреВрд╕рд░реА рдмрд╛рдд, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЖрдкрдХреЗ рддрд░реНрдХ рдореЗрдВ рд╕реНрдкреЗрдЧреЗрдЯреА рдХреЗ рдПрдХ рдЕрдЪреНрдЫреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рддрд░реНрдХ рдФрд░ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХрд╛ рдорд┐рд╢реНрд░рдг рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рддреИрдпрд╛рд░реА рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЗрди рджреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдмрджрд▓ рджреЗрдВрдЧреЗ, рдФрд░ рд╕рд╛рде рд╣реА рд╣рдо рдЙрд╕ "рдЬрд╛рджреВ" рдХреЛ рд╕рдордЭреЗрдВрдЧреЗ рдЬрд┐рд╕рдиреЗ рд╣рдорд╛рд░реЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд╣рдорд╛рд░реЗ рд░рд┐рдмрди рдХреЛ рдПрдХреНрд╕реЗрд▓ рдореЗрдВ рдмрдирд╛рдпрд╛ред
AddInBase рдХреНрд▓рд╛рд╕ рд╕реЗ CreateRibbonExtensibilityObject рддрд░реАрдХрд╛, рдЬрд┐рд╕рд╕реЗ рд╣рдорд╛рд░рд╛ ThisAddIn рд╡рд░реНрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рдРрдб-рдЗрди рдореЗрдВ рдХрд╕реНрдЯрдо рдлрд╝реАрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рднрдЧрд╡рд╛рди рдХрд╛ рд╢реБрдХреНрд░ рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рд╡рд┐рд╡реЗрдХрдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдЖрднрд╛рд╕реА рдмрдирд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдУрд╡рд░рд▓реЛрдб рдХрд░рдирд╛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, ThisAddIn рд╡рд░реНрдЧ рдореЗрдВ рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject() { return null; }
рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЪрд▓рд╛рддреЗ рд╣реИрдВред рджреЗрдЦрд╛! рдЯреИрдм рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЕрдм рд╕реИрдВрдкрдмреНрд░рд┐рдмреЛрди рдХреНрд▓рд╛рд╕ рдмрджрд▓реЗрдВ:
public partial class SampleRibbon { public event Action ButtonClicked; private void SampleRibbon_Load(object sender, RibbonUIEventArgs e) { } private void button1_Click(object sender, RibbonControlEventArgs e) { if (ButtonClicked != null) ButtonClicked(); } }
рдФрд░ рд╡рд░реНрдЧ ThisAddIn:
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject() { var ribbon = new SampleRibbon(); ribbon.ButtonClicked += ribbon_ButtonClicked; return Globals.Factory.GetRibbonFactory().CreateRibbonManager(new IRibbonExtension[] { ribbon }); } private void ribbon_ButtonClicked() { MessageBox.Show("Hello, world!"); }
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЪрд▓рд╛рдПрдВред рдпрджрд┐ рдЖрдкрдиреЗ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЯреИрдм рдлрд┐рд░ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдмрдЯрди рджрдмрд╛рдХрд░, рдкрд╣рд▓реЗ рдХреА рддрд░рд╣, рдПрдХ рд╕рдВрджреЗрд╢ рдмреЙрдХреНрд╕ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред
рд╣рдо рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ
рдЕрдм рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдм рдЙрдкрджреНрд░рд╡ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рддрд╛рд▓рд┐рдХрд╛ рдХреА рдкреАрдврд╝реАред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕реЗрд▓ рд╕рдЬрд╛рд╡рдЯ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрдХ рддрд░реАрдХреЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдмрдирд╛рдПрдВ:
public static void MarkBold(dynamic border) { border.Weight = XlBorderWeight.xlMedium; }
рдпрд╣ рддрд░реАрдХрд╛ рд╕реЗрд▓ рдмреЙрд░реНрдбрд░ рдХреЛ рдмреЛрд▓реНрдб рдмрдирд╛рддрд╛ рд╣реИред рд╡реИрд╕реЗ, рддрд░реНрдХ рдкреНрд░рдХрд╛рд░ рд╕реАрдорд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ - рдбрд╛рдпрдиреЗрдорд┐рдХ - .NET 4.0 рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдпрд╣ COM рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рд╣реИ! рдпрджрд┐ рдЕрдЪрд╛рдирдХ рдЖрдк рдЬрд╛рдирддреЗ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдкрдврд╝реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдпрд╣ рд▓реЗрдЦред рдЕрдкрдиреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреБрдЫ рдФрд░ рддрд░реАрдХреЗ рдмрдирд╛рдПрдБрдЧреЗ:
public enum Border { Left = 1, Right = 2, Top = 3, Bottom = 4 } private void MarkCell(dynamic cell, DateTime day) { if (day.DayOfWeek == DayOfWeek.Saturday) { MarkBold(cell.Borders[Border.Left]); MarkBold(cell.Borders[Border.Top]); MarkBold(cell.Borders[Border.Bottom]); } if (day.DayOfWeek == DayOfWeek.Sunday) { MarkBold(cell.Borders[Border.Right]); MarkBold(cell.Borders[Border.Top]); MarkBold(cell.Borders[Border.Bottom]); } cell.Columns[1].ColumnWidth = 4; }
рдЕрдм рд╣рдо рдорд╣реАрдиреЗ рдХреЗ рджрд┐рдиреЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЛрдб рд▓рд┐рдЦреЗрдВрдЧреЗ:
private static IEnumerable<DateTime> GetDaysOfCurrentMonth() { var today = DateTime.Today; var dayIter = new DateTime(today.Year, today.Month, 1); while (dayIter.Month == today.Month) { yield return dayIter; dayIter = dayIter.AddDays(1); } }
рдФрд░ рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд▓рд╛рдУ:
private void ribbon_ButtonClicked() { GenerateTable(Application.ActiveWorkbook.ActiveSheet, 1, 1); } private void GenerateTable(dynamic wSheet, int row, int column) { var currentMonth = GetDaysOfCurrentMonth().ToArray(); for (int i = 0; i < currentMonth.Length; i++) { wSheet.Cells[row, column + i] = currentMonth[i].Day; MarkCell(wSheet.Cells[row, column + i], currentMonth[i]); } }
рдЕрдЧрд░ рдЖрдкрдиреЗ рдХрд╣реАрдВ рднреА рдЧрд▓рддреА рдирд╣реАрдВ рдХреА рд╣реИ, рддреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдЯреИрдм рдкрд░ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдЖрдкрдХреЛ рдХреБрдЫ рд╕рдорд╛рди рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ .NET рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕реЗрд▓ рдРрдб-рдЗрдиреНрд╕ рдмрдирд╛рдиреЗ рдХреА рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рд╕рдордЭ рдорд┐рд▓ рдЧрдИ рд╣реИред рдЖрдЧреЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдПрдордПрд╕рдбреАрдПрди рдФрд░ рдЗрд╕
рдмреНрд▓реЙрдЧ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ - рдЗрд╕ рд╡рд┐рд╖рдп рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╕рдордп рдЗрд╕рд╕реЗ рдореБрдЭреЗ рдмрд╣реБрдд рдорджрдж рдорд┐рд▓реАред рд╕рднреА рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ рдФрд░ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!