рдореИрдВрдиреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреНрд╕реЗрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбреЗрдЯрд╛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдПрдХреНрд╕реЗрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рд╛ред
рдпрд╣ рд╕рдм рдЗрд╕ рддрдереНрдп рд╕реЗ рд╢реБрд░реВ рд╣реБрдЖ рдХрд┐ рдХрд╛рдо рдкрд░, рд╣рдореЗрдВ рдореБрдлреНрдд рдПрдирд╛рд▓реЙрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдордПрд╕ рдСрдлрд┐рд╕ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Microsoft.Office рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЕрдирд▓реЛрдбрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдерд╛ред Interop.Excel тАЭрдФрд░ рдХреБрдЫ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкрд▓реЗрдЯред
рдЗрд╕рд▓рд┐рдП, рдХрд╛рд░реНрдпрд╛рд▓рдп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдореБрдХреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдФрд░ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рд╣реА рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЙрддрд░рд╛рдИ рдХрд╛ рдХрд╛рдо рдХрд░рдирд╛ред рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╕рднреА рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
рдЗрд╕рд▓рд┐рдП рдореИрдВ OpenXML рдореЗрдВ рдЖрдпрд╛ред рдФрд░ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛, рдЕрдм рдореИрдВ рдЬрд▓реНрджреА рд╕реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрдХ рд╕рдорд╛рдзрд╛рди рдвреВрдВрдвреВрдВрдЧрд╛ рдФрд░ рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдо рд╕рдордп рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рдЙрдкрдпреБрдХреНрдд рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬрд┐рдирдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреАред
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЦреБрдж рдХреЛ рдорд┐рдХреНрд░рд╕реЙрдлреНрдЯ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдореБрдлреНрдд рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдореИрдВрдиреЗ рдУрдкрдирдПрдХреНрд╕рдПрдордПрд▓ рдПрд╕рдбреАрдХреЗ 2.5 "рдУрдкрдирдПрдХреНрд╕рдПрдордПрд▓рдПрд╕рдбреАрдХреЗ 2525.msi" рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛)
рдпрд╣рд╛рдБ ред
"OpenXMLSDKV25.msi" рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЬрд╛рдПрдВ
"C: \ Program Files \ Open XML SDK \ V2.5 \ lib" рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╣рдо рдЗрд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдЬреЛрдбрд╝реЗрдВрдЧреЗ (рдпрд╣ рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 (рдлреНрд░реЗрдорд╡рд░реНрдХ 4.0) рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред
рдиреАрдЪреЗ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛) "C: \ Templates \ template.xlsx"ред

рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг (рдпрд╣ рдХреИрд╕реЗ рдЙрддрд╛рд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЕрдВрдд рдореЗрдВ рджрд┐рдЦреЗрдЧрд╛)ред

рдХреАрд╡рд░реНрдб:
DataField: - рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╣рдорд╛рд░реЗ рд╕реНрдирд╛рди рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
DataField: [рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдирд╛рдо]
рд▓реЗрдмрд▓: - рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рд╕реЗ рд╢рдмреНрджрдХреЛрд╢ рд╕реЗ рдПрдХ рдмрд╛рд░ рдбрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
рд▓реЗрдмрд▓: [рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдореБрдЦреНрдп рдирд╛рдо]
рдФрд░ рдпрд╣ рд╡рд╣ рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд╣рдо рдбреЗрдЯрд╛ "C: \ Loading \ ReadMePlease.xlsx" рдкрдврд╝реЗрдВрдЧреЗред

рдЕрдм VS2010 рдореЗрдВ рдмрдирд╛рдПрдВ, рдЬреЛ рд╕рдорд╛рдзрд╛рди 4 рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╣реЛ рдЬрд╛рдПрдЧрд╛:
1) OpenXmlPrj рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрд╕реЛрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИред
2) рдЗрдВрдЯрд░рдлреЗрд╕ "рдХреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА" рдХреА рддрд░рд╣ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдпрд╣ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧрд╛ред
3) рдлреНрд░реЗрдорд╡рд░реНрдХ "рдХреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА" рдЬреИрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдпрд╣рд╛рдБ рдПрдХреНрд╕реЗрд▓ рдХреЗ рд╕рд╛рде рд╕рднреА рдХрд╛рдо рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
4) рдХрдиреНрд╡рд░реНрдЯрд░ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рдХреЛ рдбрд╛рдЯрд╛рдЯреЗрдмрд▓ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП "рдХреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА" рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛рдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рдЕрдм "рдлреНрд░реЗрдорд╡рд░реНрдХ" рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рджреЛ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдВ рдФрд░ OpenXML рдФрд░ WindowsBase рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рд▓рд┐рдВрдХ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ:
"рдмрдирд╛рдПрдБ" - рдбреЗрдЯрд╛ рдЕрдкрд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
"рд▓реЛрдб" - рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
"Lib" - рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, OpenXML рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬреЛрдбрд╝реЗрдВред
"рдмрдирд╛рдПрдБ" рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣рдо 4 рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рддреЗ рд╣реИрдВред
1) рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ - рдпрд╣ рд╣рдорд╛рд░рд╛ рдореБрдЦреНрдп рд╣реИрдВрдбрд▓рд░ рд╣реЛрдЧрд╛ред
рд╡рд░реНрдЧ рдмрдирд╛рдПрдБusing System; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; using System.Text.RegularExpressions; using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Spreadsheet; namespace Framework.Create {
2) рдкрд╛рдж - рдЗрд╕рдореЗрдВ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рдХреЗ рдмрд╛рдж рдЖрдиреЗ рд╡рд╛рд▓реА рд▓рд╛рдЗрдиреЗрдВ рдФрд░ рдЙрдирдХреА рдХреЛрд╢рд┐рдХрд╛рдПрдБ рд╣реЛрдВрдЧреАред
рдкрд╛рдж рд╡рд░реНрдЧ using System; using System.Collections.Generic; using DocumentFormat.OpenXml.Spreadsheet; namespace Framework.Create { public class Footer {
3) CellForFooter - рдЗрд╕рдореЗрдВ рд╕реЗрд▓ рдФрд░ рдЙрд╕рдХреЗ рдорд╛рди рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ Footer рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХреНрд▓рд╛рд╕ рд╕реЗрд▓рдлрд╝реЛрд░рдлрд╝реВрдЯрд░ using System; using DocumentFormat.OpenXml.Spreadsheet; namespace Framework.Create { public class CellForFooter {
4) рдлрд╝реАрд▓реНрдб - рдЙрд╕ рдкрдВрдХреНрддрд┐ рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рд╕рдореНтАНрдорд┐рд▓рд┐рдд рдХрд░реЗрдЧрд╛ рдЬрд╣рд╛рдВ DataField рд╕реНрдерд┐рдд рд╣реИ, DataField рдХреЗ рд╕рд╛рде рдХрдХреНрд╖реЛрдВ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдФрд░ рдлрд╝реАрд▓реНрдб рдХрд╛ рдирд╛рдо рдЬрд┐рд╕рдХрд╛ рдорд╛рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреНрд▓рд╛рд╕ рдлреАрд▓реНрдб using System; namespace Framework.Create { public class Field {
"рд▓реЛрдб" рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣рдо 2 рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рддреЗ рд╣реИрдВред
1) рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ - рдпрд╣ рд╣рдорд╛рд░рд╛ рдореБрдЦреНрдп рд╣реИрдВрдбрд▓рд░ рд╣реЛрдЧрд╛ред
рд╡рд░реНрдЧ рд▓реЛрдб using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.RegularExpressions; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Spreadsheet; namespace Framework.Load {
2) рдХреЙрд▓рдордиреЗрдо - рд▓реЛрдб рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдо рдХрд╛ рдирд╛рдо рд╣реЛрдЧрд╛ред
рд╡рд░реНрдЧ рдХреЙрд▓рдордирд╛рдо using System; namespace Framework.Load { public class ColumnName {
рдкреНрд░реЛрдЬреЗрдХреНрдЯ "рдЗрдВрдЯрд░рдлреЗрд╕реЗрд╕" рдореЗрдВ рд╣рдо рдЕрдкрдиреЗ рдбреЗрдЯрд╛ IDataForTest рдХрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рдПрдВрдЧреЗред
IDataForTest рдЗрдВрдЯрд░рдлрд╝реЗрд╕ using System; namespace Interfaces { public interface IDataForTest { String A { get; } String B { get; } String C { get; } } }
"рдХрдиреНрд╡рд░реНрдЯрд░" рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ, рдПрдХ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдВ
ConvertToDataTable - DataTable рдореЗрдВ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рдХреЛ рдХрдиреНрд╡рд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рд╡рд░реНрдЧ ConvertToDataTable using System; using System.Collections; using System.Collections.Generic; using System.Data; using Interfaces; namespace Converter { public class ConvertToDataTable { public DataTable ExcelTableLines(IEnumerable<IDataForTest> lines) { var dt = CreateTable(); foreach (var line in lines) { var row = dt.NewRow(); row["AAA"] = line.A; row["BBB"] = line.B; row["CCC"] = line.C; dt.Rows.Add(row); } return dt; } public Hashtable ExcelTableHeader(Int32 count) { var head = new Dictionary<String, String> { { "Date", DateTime.Today.Date.ToShortDateString() }, { "Count", count.ToString() } }; return new Hashtable(head); } private DataTable CreateTable() { var dt = new DataTable("ExelTable"); var col = new DataColumn { DataType = typeof(String), ColumnName = "AAA" }; dt.Columns.Add(col); col = new DataColumn { DataType = typeof(String), ColumnName = "BBB" }; dt.Columns.Add(col); col = new DataColumn { DataType = typeof(String), ColumnName = "CCC" }; dt.Columns.Add(col); return dt; } } }
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ "OpenXmlPrj"
"рдкреНрд░реЛрдЧреНрд░рд╛рдо" рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рд╣реЛрдЧрд╛ред
рдХрдХреНрд╖рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо using System; using System.Collections.Generic; using System.Data; namespace OpenXmlPrj { class Program { static void Main(string[] args) {
рдФрд░ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЧ "DataForTest" рд╣реИред
рд╡рд░реНрдЧ DataForTest using System; using System.Data; using Interfaces; namespace OpenXmlPrj { public class DataForTest : IDataForTest { public String A { get; private set; } public String B { get; private set; } public String C { get; private set; } public DataForTest(String a, String b, String c) { A = a; B = b; C = c; } public DataForTest(DataRow item) { A = item["MyFieldA"].ToString(); B = item["MyFieldB"].ToString(); C = item["MyFieldC"].ToString(); } } }
рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ "OpenXmlPrj" рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рд╕реЗ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдЗрдВрдЯрд░рдлреЗрд╕, рдлреНрд░реЗрдорд╡рд░реНрдХ, рдХрдирд╡рд░реНрдЯрд░
рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд░реНрддреЗрдВ:
1. рдПрдХреНрд╕реЗрд▓ рд╢реАрдЯ, рдЗрд╕реЗ "рд╢реАрдЯ 1" рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ рдпрджрд┐ рдЖрдк рдирд╛рдо рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдб рдХреЛ рдирд╛рдо рднреА рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛)ред
2. DataField рдХреЗ рдмрд╛рдж рдирд╛рдо: DataTable рдореЗрдВ рдХреЙрд▓рдо рдирд╛рдореЛрдВ рд╕реЗ рд╕рдЦреНрддреА рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
3. рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ ".xlsx" рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЬрд┐рд╕ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╣рдо рдбреЗрдЯрд╛ рдкрдврд╝реЗрдВрдЧреЗ, рдЙрд╕рдХреЗ рд▓рд┐рдП рд╢рд░реНрддреЗрдВ:
1. рдПрдХреНрд╕реЗрд▓ рд╢реАрдЯ, рдЗрд╕реЗ "рд╢реАрдЯ 1" рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ рдпрджрд┐ рдЖрдк рдирд╛рдо рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдб рдХреЛ рдирд╛рдо рднреА рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛)ред
2. рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХреЙрд▓рдо рдХрд╛ рдирд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рдо рдлрд┐рд░ рдбреЗрдЯрд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВрдЧреЗред
GitHub рдореЗрдВ рд╕реНрд░реЛрдд рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВред