diff --git a/JQSalesSummaryPanel.Designer.cs b/JQSalesSummaryPanel.Designer.cs
new file mode 100644
index 0000000..491deca
--- /dev/null
+++ b/JQSalesSummaryPanel.Designer.cs
@@ -0,0 +1,216 @@
+namespace KellyReport_D
+{
+ partial class JQSalesSummaryPanel
+ {
+ ///
+ /// 必需的设计器变量。
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// 清理所有正在使用的资源。
+ ///
+ /// 如果应释放托管资源,为 true;否则为 false。
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region 组件设计器生成的代码
+
+ ///
+ /// 设计器支持所需的方法 - 不要修改
+ /// 使用代码编辑器修改此方法的内容。
+ ///
+ private void InitializeComponent()
+ {
+ this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
+ this.step1Lab = new System.Windows.Forms.Label();
+ this.step1DescLab = new System.Windows.Forms.Label();
+ this.step1NoteLab = new System.Windows.Forms.Label();
+ this.buttonWrapper1 = new System.Windows.Forms.Panel();
+ this.initForecastBtn = new System.Windows.Forms.Button();
+ this.flowLayoutPanel2 = new System.Windows.Forms.FlowLayoutPanel();
+ this.step2Lab = new System.Windows.Forms.Label();
+ this.step2DescLab = new System.Windows.Forms.Label();
+ this.buttonWrapper2 = new System.Windows.Forms.Panel();
+ this.importSalesBtn = new System.Windows.Forms.Button();
+ this.flowLayoutPanel1.SuspendLayout();
+ this.buttonWrapper1.SuspendLayout();
+ this.flowLayoutPanel2.SuspendLayout();
+ this.buttonWrapper2.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // flowLayoutPanel1
+ //
+ this.flowLayoutPanel1.AutoSize = true;
+ this.flowLayoutPanel1.Controls.Add(this.step1Lab);
+ this.flowLayoutPanel1.Controls.Add(this.step1DescLab);
+ this.flowLayoutPanel1.Controls.Add(this.step1NoteLab);
+ this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Top;
+ this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 0);
+ this.flowLayoutPanel1.Name = "flowLayoutPanel1";
+ this.flowLayoutPanel1.Size = new System.Drawing.Size(600, 36);
+ this.flowLayoutPanel1.TabIndex = 0;
+ //
+ // step1Lab
+ //
+ this.step1Lab.AutoSize = true;
+ this.step1Lab.Dock = System.Windows.Forms.DockStyle.Top;
+ this.step1Lab.Font = new System.Drawing.Font("微软雅黑", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.step1Lab.Location = new System.Drawing.Point(3, 0);
+ this.step1Lab.Name = "step1Lab";
+ this.step1Lab.Size = new System.Drawing.Size(238, 36);
+ this.step1Lab.TabIndex = 0;
+ this.step1Lab.Text = "Resources.STEP1";
+ //
+ // step1DescLab
+ //
+ this.step1DescLab.AutoSize = true;
+ this.step1DescLab.Dock = System.Windows.Forms.DockStyle.Top;
+ this.step1DescLab.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.step1DescLab.Location = new System.Drawing.Point(247, 0);
+ this.step1DescLab.Name = "step1DescLab";
+ this.step1DescLab.Size = new System.Drawing.Size(244, 28);
+ this.step1DescLab.TabIndex = 1;
+ this.step1DescLab.Text = "Resources.STEP1_DESC";
+ //
+ // step1NoteLab
+ //
+ this.step1NoteLab.AutoSize = true;
+ this.step1NoteLab.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.step1NoteLab.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.step1NoteLab.ForeColor = System.Drawing.Color.Firebrick;
+ this.step1NoteLab.Location = new System.Drawing.Point(497, 0);
+ this.step1NoteLab.Name = "step1NoteLab";
+ this.step1NoteLab.Size = new System.Drawing.Size(63, 36);
+ this.step1NoteLab.TabIndex = 3;
+ this.step1NoteLab.Text = "label1";
+ //
+ // buttonWrapper1
+ //
+ this.buttonWrapper1.AutoSize = true;
+ this.buttonWrapper1.Controls.Add(this.initForecastBtn);
+ this.buttonWrapper1.Dock = System.Windows.Forms.DockStyle.Top;
+ this.buttonWrapper1.Location = new System.Drawing.Point(0, 36);
+ this.buttonWrapper1.Margin = new System.Windows.Forms.Padding(3, 3, 3, 10);
+ this.buttonWrapper1.Name = "buttonWrapper1";
+ this.buttonWrapper1.Size = new System.Drawing.Size(600, 56);
+ this.buttonWrapper1.TabIndex = 5;
+ //
+ // initForecastBtn
+ //
+ this.initForecastBtn.Anchor = System.Windows.Forms.AnchorStyles.Top;
+ this.initForecastBtn.BackColor = System.Drawing.SystemColors.ControlLight;
+ this.initForecastBtn.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.initForecastBtn.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.Control;
+ this.initForecastBtn.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.initForecastBtn.ForeColor = System.Drawing.Color.Black;
+ this.initForecastBtn.Location = new System.Drawing.Point(220, 3);
+ this.initForecastBtn.MinimumSize = new System.Drawing.Size(0, 50);
+ this.initForecastBtn.Name = "initForecastBtn";
+ this.initForecastBtn.Size = new System.Drawing.Size(200, 50);
+ this.initForecastBtn.TabIndex = 2;
+ this.initForecastBtn.Text = "button1";
+ this.initForecastBtn.UseVisualStyleBackColor = true;
+ //
+ // flowLayoutPanel2
+ //
+ this.flowLayoutPanel2.AutoSize = true;
+ this.flowLayoutPanel2.Controls.Add(this.step2Lab);
+ this.flowLayoutPanel2.Controls.Add(this.step2DescLab);
+ this.flowLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Top;
+ this.flowLayoutPanel2.Location = new System.Drawing.Point(0, 92);
+ this.flowLayoutPanel2.Name = "flowLayoutPanel2";
+ this.flowLayoutPanel2.Size = new System.Drawing.Size(600, 36);
+ this.flowLayoutPanel2.TabIndex = 6;
+ //
+ // step2Lab
+ //
+ this.step2Lab.AutoSize = true;
+ this.step2Lab.Dock = System.Windows.Forms.DockStyle.Top;
+ this.step2Lab.Font = new System.Drawing.Font("微软雅黑", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.step2Lab.Location = new System.Drawing.Point(3, 0);
+ this.step2Lab.Name = "step2Lab";
+ this.step2Lab.Size = new System.Drawing.Size(238, 36);
+ this.step2Lab.TabIndex = 1;
+ this.step2Lab.Text = "Resources.STEP1";
+ //
+ // step2DescLab
+ //
+ this.step2DescLab.Dock = System.Windows.Forms.DockStyle.Top;
+ this.step2DescLab.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.step2DescLab.Location = new System.Drawing.Point(247, 0);
+ this.step2DescLab.Name = "step2DescLab";
+ this.step2DescLab.Size = new System.Drawing.Size(244, 36);
+ this.step2DescLab.TabIndex = 2;
+ this.step2DescLab.Text = "Resources.STEP1_DESC";
+ //
+ // buttonWrapper2
+ //
+ this.buttonWrapper2.AutoSize = true;
+ this.buttonWrapper2.Controls.Add(this.importSalesBtn);
+ this.buttonWrapper2.Dock = System.Windows.Forms.DockStyle.Top;
+ this.buttonWrapper2.Location = new System.Drawing.Point(0, 128);
+ this.buttonWrapper2.Name = "buttonWrapper2";
+ this.buttonWrapper2.Size = new System.Drawing.Size(600, 56);
+ this.buttonWrapper2.TabIndex = 7;
+ //
+ // importSalesBtn
+ //
+ this.importSalesBtn.Anchor = System.Windows.Forms.AnchorStyles.Top;
+ this.importSalesBtn.BackColor = System.Drawing.SystemColors.ControlLight;
+ this.importSalesBtn.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.importSalesBtn.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.Control;
+ this.importSalesBtn.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.importSalesBtn.ForeColor = System.Drawing.Color.Black;
+ this.importSalesBtn.Location = new System.Drawing.Point(220, 3);
+ this.importSalesBtn.MinimumSize = new System.Drawing.Size(0, 50);
+ this.importSalesBtn.Name = "importSalesBtn";
+ this.importSalesBtn.Size = new System.Drawing.Size(200, 50);
+ this.importSalesBtn.TabIndex = 2;
+ this.importSalesBtn.Text = "button1";
+ this.importSalesBtn.UseVisualStyleBackColor = true;
+ //
+ // JQSalesSummaryPanel
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.AutoSize = true;
+ this.Controls.Add(this.buttonWrapper2);
+ this.Controls.Add(this.flowLayoutPanel2);
+ this.Controls.Add(this.buttonWrapper1);
+ this.Controls.Add(this.flowLayoutPanel1);
+ this.Name = "JQSalesSummaryPanel";
+ this.Size = new System.Drawing.Size(600, 184);
+ this.Resize += new System.EventHandler(this.JQSalesSummaryPanel_Resize);
+ this.flowLayoutPanel1.ResumeLayout(false);
+ this.flowLayoutPanel1.PerformLayout();
+ this.buttonWrapper1.ResumeLayout(false);
+ this.flowLayoutPanel2.ResumeLayout(false);
+ this.flowLayoutPanel2.PerformLayout();
+ this.buttonWrapper2.ResumeLayout(false);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
+ private System.Windows.Forms.Label step1Lab;
+ private System.Windows.Forms.Label step1DescLab;
+ private System.Windows.Forms.Label step1NoteLab;
+ private System.Windows.Forms.Panel buttonWrapper1;
+ private System.Windows.Forms.Button initForecastBtn;
+ private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2;
+ private System.Windows.Forms.Label step2Lab;
+ private System.Windows.Forms.Label step2DescLab;
+ private System.Windows.Forms.Panel buttonWrapper2;
+ private System.Windows.Forms.Button importSalesBtn;
+ }
+}
diff --git a/JQSalesSummaryPanel.cs b/JQSalesSummaryPanel.cs
new file mode 100644
index 0000000..7274fc9
--- /dev/null
+++ b/JQSalesSummaryPanel.cs
@@ -0,0 +1,57 @@
+using KellyReport_D.Properties;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace KellyReport_D
+{
+ public partial class JQSalesSummaryPanel : UserControl
+ {
+ public JQSalesSummaryPanel()
+ {
+ InitializeComponent();
+ }
+
+ override
+ protected void OnLoad(EventArgs e)
+ {
+ base.OnLoad(e);
+ this.step1Lab.Text = Resources.Step1;
+ this.step1DescLab.Text = Resources.STEP1_DESC;
+ this.step1NoteLab.Text = Resources.STEP1_NOTE;
+ this.initForecastBtn.Text = Resources.INIT_FORECAST;
+
+ this.step2Lab.Text = Resources.Step2;
+ this.step2DescLab.Text = Resources.STEP2_DESC;
+ this.importSalesBtn.Text = Resources.IMPORT_SALES;
+ }
+
+ private void panel1_Resize(object sender, EventArgs e)
+ {
+ initForecastBtn.Left = (buttonWrapper1.ClientSize.Width - initForecastBtn.Width) / 2;
+ initForecastBtn.Top = (buttonWrapper1.ClientSize.Height - initForecastBtn.Height) / 2; // 可选:垂直居中
+ }
+
+ private void JQSalesSummaryPanel_Resize(object sender, EventArgs e)
+ {
+ //this.step2DescLab.Size = new Size(this.Width, 65);
+ int width = this.Width;
+ // 预留内边距
+ int padding = this.step2DescLab.Padding.Vertical + 4;
+ // 计算文本所需高度
+ Size textSize = TextRenderer.MeasureText(
+ this.step2DescLab.Text,
+ this.step2DescLab.Font,
+ new Size(width, int.MaxValue),
+ TextFormatFlags.WordBreak
+ );
+ step2DescLab.Size = new Size(width, textSize.Height + padding);
+ }
+ }
+}
diff --git a/JQSalesSummaryPanel.resx b/JQSalesSummaryPanel.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/JQSalesSummaryPanel.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/KellyReport_D.csproj b/KellyReport_D.csproj
new file mode 100644
index 0000000..aefbbb3
--- /dev/null
+++ b/KellyReport_D.csproj
@@ -0,0 +1,298 @@
+
+
+
+
+ {BAA0C2D2-18E2-41B9-852F-F413020CAA33};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ Debug
+ AnyCPU
+ {FEB9B0D1-503E-42D5-9D86-4F15DDCF8600}
+ Library
+ false
+ KellyReport_D
+ KellyReport_D
+ v4.8.1
+ VSTO40;UseOfficeInterop
+ true
+ False
+ true
+ publish\
+
+ zh-chs
+ 1.0.0.1
+ true
+ true
+ 7
+ days
+ KellyReport_D
+
+
+ KellyReport_D
+
+ 3
+
+
+
+ False
+ Microsoft .NET Framework 4.8.1 %28x86 和 x64%29
+ true
+
+
+ False
+ .NET Framework 3.5 SP1
+ false
+
+
+ False
+ Microsoft Visual Studio 2010 Tools for Office Runtime %28x86 和 x64%29
+ true
+
+
+
+
+ Excel
+
+
+
+ true
+ full
+ false
+ bin\Debug\
+ false
+ $(DefineConstants);DEBUG;TRACE
+ 4
+
+
+
+ pdbonly
+ true
+ bin\Release\
+ false
+ $(DefineConstants);TRACE
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+ True
+
+
+
+
+
+
+ False
+ true
+
+
+ False
+ true
+
+
+
+
+
+
+ {2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}
+ 2
+ 7
+ 0
+ tlbimp
+ False
+ true
+
+
+ {00020813-0000-0000-C000-000000000046}
+ 1
+ 8
+ 0
+ tlbimp
+ False
+ true
+
+
+
+
+
+
+ False
+
+
+
+
+
+ UserControl
+
+
+ JQSalesSummaryPanel.cs
+
+
+ Code
+
+
+ JQSalesSummaryPanel.cs
+
+
+ PublicResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+ True
+
+
+ Ribbon1.cs
+
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+
+
+ Component
+
+
+ Ribbon1.cs
+
+
+ Code
+
+
+ ThisAddIn.cs
+
+
+ ThisAddIn.Designer.xml
+
+
+
+
+
+
+
+
+ 10.0
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+
+
+ true
+
+
+ KellyReport_D_TemporaryKey.pfx
+
+
+ AE7A694AECE4F9D414288368667D706D52C47471
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/KellyReport_D.sln b/KellyReport_D.sln
new file mode 100644
index 0000000..8bfd8b7
--- /dev/null
+++ b/KellyReport_D.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.9.34728.123
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KellyReport_D", "KellyReport_D.csproj", "{FEB9B0D1-503E-42D5-9D86-4F15DDCF8600}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {FEB9B0D1-503E-42D5-9D86-4F15DDCF8600}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FEB9B0D1-503E-42D5-9D86-4F15DDCF8600}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FEB9B0D1-503E-42D5-9D86-4F15DDCF8600}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FEB9B0D1-503E-42D5-9D86-4F15DDCF8600}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {53CDA27C-F3CD-4714-884D-B3DDD4E7B47B}
+ EndGlobalSection
+EndGlobal
diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..9489fc0
--- /dev/null
+++ b/Properties/AssemblyInfo.cs
@@ -0,0 +1,38 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Security;
+
+// 有关程序集的一般信息由以下
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("KellyReport_D")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("HP Inc.")]
+[assembly: AssemblyProduct("KellyReport_D")]
+[assembly: AssemblyCopyright("Copyright © HP Inc. 2025")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+//将 ComVisible 设置为 false 将使此程序集中的类型
+//对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
+//请将此类型的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("2f4e225f-decb-4582-86db-d45340dc77d9")]
+
+// 程序集的版本信息由下列四个值组成:
+//
+// 主版本
+// 次版本
+// 生成号
+// 修订号
+//
+//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
+// 方法是按如下所示使用“*”: :
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
+
diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..84ae4f9
--- /dev/null
+++ b/Properties/Resources.Designer.cs
@@ -0,0 +1,146 @@
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+namespace KellyReport_D.Properties {
+ using System;
+
+
+ ///
+ /// 一个强类型的资源类,用于查找本地化的字符串等。
+ ///
+ // 此类是由 StronglyTypedResourceBuilder
+ // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
+ // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
+ // (以 /str 作为命令选项),或重新生成 VS 项目。
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ public class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// 返回此类使用的缓存的 ResourceManager 实例。
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ public static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("KellyReport_D.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// 重写当前线程的 CurrentUICulture 属性,对
+ /// 使用此强类型资源类的所有资源查找执行重写。
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ public static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// 查找类似 JQ销售年度预估表 的本地化字符串。
+ ///
+ public static string APP_NAME {
+ get {
+ return ResourceManager.GetString("APP_NAME", resourceCulture);
+ }
+ }
+
+ ///
+ /// 查找 System.Drawing.Bitmap 类型的本地化资源。
+ ///
+ public static System.Drawing.Bitmap icon_32 {
+ get {
+ object obj = ResourceManager.GetObject("icon_32", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// 查找类似 導入銷售表 的本地化字符串。
+ ///
+ public static string IMPORT_SALES {
+ get {
+ return ResourceManager.GetString("IMPORT_SALES", resourceCulture);
+ }
+ }
+
+ ///
+ /// 查找类似 制定年度預估 的本地化字符串。
+ ///
+ public static string INIT_FORECAST {
+ get {
+ return ResourceManager.GetString("INIT_FORECAST", resourceCulture);
+ }
+ }
+
+ ///
+ /// 查找类似 Step1: 的本地化字符串。
+ ///
+ public static string Step1 {
+ get {
+ return ResourceManager.GetString("Step1", resourceCulture);
+ }
+ }
+
+ ///
+ /// 查找类似 請在"銷售年度預估" 和 "產品年度預估" 工作簿中填寫年度預估值,然後點擊下方按鈕開始生成《業務月達成 》和《年度JQ產品》表。 的本地化字符串。
+ ///
+ public static string STEP1_DESC {
+ get {
+ return ResourceManager.GetString("STEP1_DESC", resourceCulture);
+ }
+ }
+
+ ///
+ /// 查找类似 * 如果年度預估已經制定並沒有更改,請跳過該步驟。 的本地化字符串。
+ ///
+ public static string STEP1_NOTE {
+ get {
+ return ResourceManager.GetString("STEP1_NOTE", resourceCulture);
+ }
+ }
+
+ ///
+ /// 查找类似 Step2: 的本地化字符串。
+ ///
+ public static string Step2 {
+ get {
+ return ResourceManager.GetString("Step2", resourceCulture);
+ }
+ }
+
+ ///
+ /// 查找类似 請導入銷售數據表, 並點擊下方 "導入銷售表" 按鈕。
+ ///程序將會根據銷售表的數據生成各個業務的JQ Total表。 的本地化字符串。
+ ///
+ public static string STEP2_DESC {
+ get {
+ return ResourceManager.GetString("STEP2_DESC", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/Properties/Resources.resx b/Properties/Resources.resx
new file mode 100644
index 0000000..2f425e5
--- /dev/null
+++ b/Properties/Resources.resx
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ JQ销售年度预估表
+
+
+
+ ..\Resources\icon_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ 導入銷售表
+
+
+ 制定年度預估
+
+
+ Step1:
+
+
+ 請在"銷售年度預估" 和 "產品年度預估" 工作簿中填寫年度預估值,然後點擊下方按鈕開始生成《業務月達成 》和《年度JQ產品》表。
+
+
+ * 如果年度預估已經制定並沒有更改,請跳過該步驟。
+
+
+ Step2:
+
+
+ 請導入銷售數據表, 並點擊下方 "導入銷售表" 按鈕。
+程序將會根據銷售表的數據生成各個業務的JQ Total表。
+
+
\ No newline at end of file
diff --git a/Properties/Settings.Designer.cs b/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..35dff37
--- /dev/null
+++ b/Properties/Settings.Designer.cs
@@ -0,0 +1,26 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace KellyReport_D.Properties {
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default {
+ get {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/Properties/Settings.settings b/Properties/Settings.settings
new file mode 100644
index 0000000..3964565
--- /dev/null
+++ b/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/Resources/icon_32.png b/Resources/icon_32.png
new file mode 100644
index 0000000..e9e78e5
Binary files /dev/null and b/Resources/icon_32.png differ
diff --git a/Ribbon1.Designer.cs b/Ribbon1.Designer.cs
new file mode 100644
index 0000000..db6afa5
--- /dev/null
+++ b/Ribbon1.Designer.cs
@@ -0,0 +1,93 @@
+namespace KellyReport_D
+{
+ partial class Ribbon1 : Microsoft.Office.Tools.Ribbon.RibbonBase
+ {
+ ///
+ /// 必需的设计器变量。
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ public Ribbon1()
+ : base(Globals.Factory.GetRibbonFactory())
+ {
+ InitializeComponent();
+ }
+
+ ///
+ /// 清理所有正在使用的资源。
+ ///
+ /// 如果应释放托管资源,为 true;否则为 false。
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region 组件设计器生成的代码
+
+ ///
+ /// 设计器支持所需的方法 - 不要修改
+ /// 使用代码编辑器修改此方法的内容。
+ ///
+ private void InitializeComponent()
+ {
+ this.tab1 = this.Factory.CreateRibbonTab();
+ this.groupName = this.Factory.CreateRibbonGroup();
+ this.button1 = this.Factory.CreateRibbonButton();
+ this.tab1.SuspendLayout();
+ this.groupName.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // tab1
+ //
+ this.tab1.ControlId.ControlIdType = Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office;
+ this.tab1.Groups.Add(this.groupName);
+ this.tab1.Label = "TabAddIns";
+ this.tab1.Name = "tab1";
+ //
+ // groupName
+ //
+ this.groupName.Items.Add(this.button1);
+ this.groupName.Name = "groupName";
+ //
+ // button1
+ //
+ this.button1.ControlSize = Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
+ this.button1.Image = global::KellyReport_D.Properties.Resources.icon_32;
+ this.button1.Label = "";
+ this.button1.Name = "button1";
+ this.button1.ShowImage = true;
+ this.button1.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(this.button1_Click);
+ //
+ // Ribbon1
+ //
+ this.Name = "Ribbon1";
+ this.RibbonType = "Microsoft.Excel.Workbook";
+ this.Tabs.Add(this.tab1);
+ this.Load += new Microsoft.Office.Tools.Ribbon.RibbonUIEventHandler(this.Ribbon1_Load);
+ this.tab1.ResumeLayout(false);
+ this.tab1.PerformLayout();
+ this.groupName.ResumeLayout(false);
+ this.groupName.PerformLayout();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ internal Microsoft.Office.Tools.Ribbon.RibbonTab tab1;
+ internal Microsoft.Office.Tools.Ribbon.RibbonGroup groupName;
+ internal Microsoft.Office.Tools.Ribbon.RibbonButton button1;
+ }
+
+ partial class ThisRibbonCollection
+ {
+ internal Ribbon1 Ribbon1
+ {
+ get { return this.GetRibbon(); }
+ }
+ }
+}
diff --git a/Ribbon1.cs b/Ribbon1.cs
new file mode 100644
index 0000000..ba7c104
--- /dev/null
+++ b/Ribbon1.cs
@@ -0,0 +1,33 @@
+using KellyReport_D.Properties;
+using Microsoft.Office.Tools;
+using Microsoft.Office.Tools.Ribbon;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace KellyReport_D
+{
+ public partial class Ribbon1
+ {
+ private CustomTaskPane jqSalesSummaryPanel;
+
+ private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
+ {
+ this.button1.Label = Resources.APP_NAME;
+
+ }
+
+ private void button1_Click(object sender, RibbonControlEventArgs e)
+ {
+ if (jqSalesSummaryPanel == null)
+ {
+ var panel = new JQSalesSummaryPanel();
+ jqSalesSummaryPanel = Globals.ThisAddIn.CustomTaskPanes.Add(panel, Resources.APP_NAME);
+ jqSalesSummaryPanel.Width = 600;
+ }
+
+ jqSalesSummaryPanel.Visible = true;
+ }
+ }
+}
diff --git a/Ribbon1.resx b/Ribbon1.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/Ribbon1.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/ThisAddIn.Designer.cs b/ThisAddIn.Designer.cs
new file mode 100644
index 0000000..ae3436f
--- /dev/null
+++ b/ThisAddIn.Designer.cs
@@ -0,0 +1,237 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+#pragma warning disable 414
+namespace KellyReport_D {
+
+
+ ///
+ [Microsoft.VisualStudio.Tools.Applications.Runtime.StartupObjectAttribute(0)]
+ [global::System.Security.Permissions.PermissionSetAttribute(global::System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
+ public sealed partial class ThisAddIn : Microsoft.Office.Tools.AddInBase {
+
+ internal Microsoft.Office.Tools.CustomTaskPaneCollection CustomTaskPanes;
+
+ internal Microsoft.Office.Tools.SmartTagCollection VstoSmartTags;
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")]
+ private global::System.Object missing = global::System.Type.Missing;
+
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")]
+ internal Microsoft.Office.Interop.Excel.Application Application;
+
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)]
+ public ThisAddIn(global::Microsoft.Office.Tools.Excel.ApplicationFactory factory, global::System.IServiceProvider serviceProvider) :
+ base(factory, serviceProvider, "AddIn", "ThisAddIn") {
+ Globals.Factory = factory;
+ }
+
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")]
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)]
+ protected override void Initialize() {
+ base.Initialize();
+ this.Application = this.GetHostItem(typeof(Microsoft.Office.Interop.Excel.Application), "Application");
+ Globals.ThisAddIn = this;
+ global::System.Windows.Forms.Application.EnableVisualStyles();
+ this.InitializeCachedData();
+ this.InitializeControls();
+ this.InitializeComponents();
+ this.InitializeData();
+ }
+
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")]
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)]
+ protected override void FinishInitialization() {
+ this.InternalStartup();
+ this.OnStartup();
+ }
+
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")]
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)]
+ protected override void InitializeDataBindings() {
+ this.BeginInitialization();
+ this.BindToData();
+ this.EndInitialization();
+ }
+
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")]
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)]
+ private void InitializeCachedData() {
+ if ((this.DataHost == null)) {
+ return;
+ }
+ if (this.DataHost.IsCacheInitialized) {
+ this.DataHost.FillCachedData(this);
+ }
+ }
+
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")]
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)]
+ private void InitializeData() {
+ }
+
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")]
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)]
+ private void BindToData() {
+ }
+
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ private void StartCaching(string MemberName) {
+ this.DataHost.StartCaching(this, MemberName);
+ }
+
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ private void StopCaching(string MemberName) {
+ this.DataHost.StopCaching(this, MemberName);
+ }
+
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ private bool IsCached(string MemberName) {
+ return this.DataHost.IsCached(this, MemberName);
+ }
+
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")]
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)]
+ private void BeginInitialization() {
+ this.BeginInit();
+ this.CustomTaskPanes.BeginInit();
+ this.VstoSmartTags.BeginInit();
+ }
+
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")]
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)]
+ private void EndInitialization() {
+ this.VstoSmartTags.EndInit();
+ this.CustomTaskPanes.EndInit();
+ this.EndInit();
+ }
+
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")]
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)]
+ private void InitializeControls() {
+ this.CustomTaskPanes = Globals.Factory.CreateCustomTaskPaneCollection(null, null, "CustomTaskPanes", "CustomTaskPanes", this);
+ this.VstoSmartTags = Globals.Factory.CreateSmartTagCollection(null, null, "VstoSmartTags", "VstoSmartTags", this);
+ }
+
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")]
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)]
+ private void InitializeComponents() {
+ }
+
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ private bool NeedsFill(string MemberName) {
+ return this.DataHost.NeedsFill(this, MemberName);
+ }
+
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")]
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)]
+ protected override void OnShutdown() {
+ this.VstoSmartTags.Dispose();
+ this.CustomTaskPanes.Dispose();
+ base.OnShutdown();
+ }
+ }
+
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")]
+ internal sealed partial class Globals {
+
+ ///
+ private Globals() {
+ }
+
+ private static ThisAddIn _ThisAddIn;
+
+ private static global::Microsoft.Office.Tools.Excel.ApplicationFactory _factory;
+
+ private static ThisRibbonCollection _ThisRibbonCollection;
+
+ internal static ThisAddIn ThisAddIn {
+ get {
+ return _ThisAddIn;
+ }
+ set {
+ if ((_ThisAddIn == null)) {
+ _ThisAddIn = value;
+ }
+ else {
+ throw new System.NotSupportedException();
+ }
+ }
+ }
+
+ internal static global::Microsoft.Office.Tools.Excel.ApplicationFactory Factory {
+ get {
+ return _factory;
+ }
+ set {
+ if ((_factory == null)) {
+ _factory = value;
+ }
+ else {
+ throw new System.NotSupportedException();
+ }
+ }
+ }
+
+ internal static ThisRibbonCollection Ribbons {
+ get {
+ if ((_ThisRibbonCollection == null)) {
+ _ThisRibbonCollection = new ThisRibbonCollection(_factory.GetRibbonFactory());
+ }
+ return _ThisRibbonCollection;
+ }
+ }
+ }
+
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Tools.Office.ProgrammingModel.dll", "17.0.0.0")]
+ internal sealed partial class ThisRibbonCollection : Microsoft.Office.Tools.Ribbon.RibbonCollectionBase {
+
+ ///
+ internal ThisRibbonCollection(global::Microsoft.Office.Tools.Ribbon.RibbonFactory factory) :
+ base(factory) {
+ }
+ }
+}
diff --git a/ThisAddIn.Designer.xml b/ThisAddIn.Designer.xml
new file mode 100644
index 0000000..7410750
--- /dev/null
+++ b/ThisAddIn.Designer.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/ThisAddIn.cs b/ThisAddIn.cs
new file mode 100644
index 0000000..2749800
--- /dev/null
+++ b/ThisAddIn.cs
@@ -0,0 +1,36 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Xml.Linq;
+using Excel = Microsoft.Office.Interop.Excel;
+using Office = Microsoft.Office.Core;
+using Microsoft.Office.Tools.Excel;
+using Microsoft.Office.Tools.Ribbon;
+
+namespace KellyReport_D
+{
+ public partial class ThisAddIn
+ {
+ private void ThisAddIn_Startup(object sender, System.EventArgs e)
+ {
+ }
+
+ private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
+ {
+ }
+ #region VSTO 生成的代码
+
+ ///
+ /// 设计器支持所需的方法 - 不要修改
+ /// 使用代码编辑器修改此方法的内容。
+ ///
+ private void InternalStartup()
+ {
+ this.Startup += new System.EventHandler(ThisAddIn_Startup);
+ this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
+ }
+
+ #endregion
+ }
+}