diff --git a/Tool/ExcelToAdocConverter/EcxelToAdocConverter.exe b/Tool/ExcelToAdocConverter/EcxelToAdocConverter.exe new file mode 100644 index 0000000000000000000000000000000000000000..21244401e2f7de3f5f53447586214403d021c79d Binary files /dev/null and b/Tool/ExcelToAdocConverter/EcxelToAdocConverter.exe differ diff --git a/Tool/ExcelToAdocConverter/readme.txt b/Tool/ExcelToAdocConverter/readme.txt new file mode 100644 index 0000000000000000000000000000000000000000..c736604992e8bbc99818c38d510649b3e9f5632c --- /dev/null +++ b/Tool/ExcelToAdocConverter/readme.txt @@ -0,0 +1,20 @@ +■使い方 +1.EcxelToAdocConverter.exeを起動 +2.エクセルで任意の範囲を選択しコピー +3."Get AsciiDoc from Clipboad"をクリック +4.結果をAdocにコピペ + +■更新履歴 +========================== +2021/03/11 rev1 +以下サイトを参考に、エクセルの表をAdoc表記に変換するツールを用意しました。 +(参考) +[ExcelとかWordでクリップボードにコピーしたデータからAsciiDocの表に変換するツールをつくってみた(結合セル対応)] +https://qiita.com/kob58im/items/8c3c609b828afbc8fec2 + +========================== +2021/03/11 rev2 大島追記 +・水平垂直の揃えに対応しました。 +・デフォルト値を以下のようにしました。 +  ・列の幅は自動調整 +   diff --git a/Tool/ExcelToAdocConverter/source/EcxelToAdocConverter.sln b/Tool/ExcelToAdocConverter/source/EcxelToAdocConverter.sln new file mode 100644 index 0000000000000000000000000000000000000000..15c6d4cefc045294ea8264fa9181212221fa7c45 --- /dev/null +++ b/Tool/ExcelToAdocConverter/source/EcxelToAdocConverter.sln @@ -0,0 +1,31 @@ +サソ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.1000 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EcxelToAdocConverter", "EcxelToAdocConverter\EcxelToAdocConverter.csproj", "{36AA7526-71EF-4009-B21E-55A0FF4CFA12}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {36AA7526-71EF-4009-B21E-55A0FF4CFA12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {36AA7526-71EF-4009-B21E-55A0FF4CFA12}.Debug|Any CPU.Build.0 = Debug|Any CPU + {36AA7526-71EF-4009-B21E-55A0FF4CFA12}.Debug|x64.ActiveCfg = Debug|x64 + {36AA7526-71EF-4009-B21E-55A0FF4CFA12}.Debug|x64.Build.0 = Debug|x64 + {36AA7526-71EF-4009-B21E-55A0FF4CFA12}.Release|Any CPU.ActiveCfg = Release|Any CPU + {36AA7526-71EF-4009-B21E-55A0FF4CFA12}.Release|Any CPU.Build.0 = Release|Any CPU + {36AA7526-71EF-4009-B21E-55A0FF4CFA12}.Release|x64.ActiveCfg = Release|x64 + {36AA7526-71EF-4009-B21E-55A0FF4CFA12}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {0FA1ADE2-6079-4C87-8348-420742F0DD6D} + EndGlobalSection +EndGlobal diff --git a/Tool/ExcelToAdocConverter/source/EcxelToAdocConverter/App.config b/Tool/ExcelToAdocConverter/source/EcxelToAdocConverter/App.config new file mode 100644 index 0000000000000000000000000000000000000000..00bfd114afa09381b01f0115be71b65a8ba9284e --- /dev/null +++ b/Tool/ExcelToAdocConverter/source/EcxelToAdocConverter/App.config @@ -0,0 +1,6 @@ +サソ + + + + + \ No newline at end of file diff --git a/Tool/ExcelToAdocConverter/source/EcxelToAdocConverter/EcxelToAdocConverter.csproj b/Tool/ExcelToAdocConverter/source/EcxelToAdocConverter/EcxelToAdocConverter.csproj new file mode 100644 index 0000000000000000000000000000000000000000..368e0f55cfe4c47e89709859abb484ebd20d953a --- /dev/null +++ b/Tool/ExcelToAdocConverter/source/EcxelToAdocConverter/EcxelToAdocConverter.csproj @@ -0,0 +1,82 @@ +サソ + + + + Debug + AnyCPU + {36AA7526-71EF-4009-B21E-55A0FF4CFA12} + Exe + EcxelToAdocConverter + EcxelToAdocConverter + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + true + bin\x64\Debug\ + DEBUG;TRACE + full + x64 + prompt + MinimumRecommendedRules.ruleset + true + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + prompt + MinimumRecommendedRules.ruleset + true + + + + + + + + + + + + + + + + Form + + + + + + + + + ExcelToAdocConverter.cs + + + + \ No newline at end of file diff --git a/Tool/ExcelToAdocConverter/source/EcxelToAdocConverter/ExcelToAdocConverter.cs b/Tool/ExcelToAdocConverter/source/EcxelToAdocConverter/ExcelToAdocConverter.cs new file mode 100644 index 0000000000000000000000000000000000000000..e979fd9383fbf97d665d7aee8a47aeb66b6c0707 --- /dev/null +++ b/Tool/ExcelToAdocConverter/source/EcxelToAdocConverter/ExcelToAdocConverter.cs @@ -0,0 +1,547 @@ +サソusing System; +using System.Collections.Generic; +using System.Drawing; +using System.IO; +using System.Text; +using System.Text.RegularExpressions; +using System.Windows.Forms; + +class SampleForm : Form +{ + static readonly int ExpectedHeaderMaxLines = 20; + static readonly Regex rxTableBeginTag = new Regex(@"]*>", RegexOptions.Multiline | RegexOptions.IgnoreCase); + // 1 2 3 *?縺ッ譛遏ュ繝槭ャ繝 o:p縺ッMS office(word)蟇セ遲 + static readonly Regex rxTag = new Regex(@"<([a-z][a-z0-9]*|o:p)(|\s[^>]*)>||", RegexOptions.Multiline | RegexOptions.IgnoreCase); + //static readonly Regex rxTag = new Regex(@"<([a-z][a-z0-9]*)(|\s[^>]*)>||", RegexOptions.Multiline | RegexOptions.IgnoreCase); + + + TextBox txtAdoc; + + SampleForm() + { + Text = "HTML table(Clipborad) to AsciiDoc"; + ClientSize = new Size(700, 430); + + var btn = new Button() + { + Size = new Size(280, 25), + Text = "Get AsciiDoc from Clipborad", + }; + btn.Click += (s, e) => { ParseFromHtmlClipboard(); }; + Controls.Add(btn); + + var btnDbg = new Button() + { + Location = new Point(300, 0), + Size = new Size(220, 25), + Text = "Get HTML from Clipborad(髢狗匱閠逕ィ)", + }; + btnDbg.Click += (s, e) => { DumpHtmlClipboard(); }; + Controls.Add(btnDbg); + + txtAdoc = new TextBox() + { + Location = new Point(0, 30), + Size = new Size(700, 400), + Text = "", + Multiline = true, + WordWrap = false, // 謚倥j霑斐@陦ィ遉コ繧偵@縺ェ縺 + ScrollBars = ScrollBars.Both, + }; + Controls.Add(txtAdoc); + txtAdoc.KeyDown += (s, e) => { if (e.Control && e.KeyCode == Keys.A) { ((TextBox)s).SelectAll(); } }; + + Resize += (s, e) => { MyResize(); }; + ResizeEnd += (s, e) => { MyResize(); }; + } + + void MyResize() + { + int h = ClientSize.Height - txtAdoc.Top; + if (h < 50) { h = 50; } + txtAdoc.Size = new Size(ClientSize.Width, h); + } + + void ParseFromHtmlClipboard() + { + MemoryStream ms = GetHtmlClipboard(); + if (ms != null) + { + string tmp = Parse(ms); + if (tmp != null) + { + txtAdoc.Text = tmp; + txtAdoc.Focus(); + txtAdoc.SelectAll(); + } + else + { + txtAdoc.Text = "Parse Failed"; + } + } + else + { + txtAdoc.Text = "Clipboard Load failed"; + } + } + + void DumpHtmlClipboard() + { + MemoryStream ms = GetHtmlClipboard(); + if (ms != null) + { + string tmp = GetHtmlText(ms); + if (tmp != null) + { + txtAdoc.Text = tmp; + //txtAdoc.Focus(); + //txtAdoc.SelectAll(); + } + else + { + txtAdoc.Text = "Parse Failed"; + } + } + else + { + txtAdoc.Text = "Clipboard Load failed"; + } + } + + static MemoryStream GetHtmlClipboard() + { + return Clipboard.GetData("Html Format") as MemoryStream; + } + + static string GetHtmlText(MemoryStream ms) + { + int startHtml = -1; + int endHtml = -1; + + // 繝倥ャ繝諠蝣ア(StartHTML, EndHTML)繧貞叙蠕 + // StartHTML:nnnnnnnnnn + // EndHTML:nnnnnnnnnn + //public StreamReader(Stream stream, Encoding encoding, bool detectEncodingFromByteOrderMarks, int bufferSize, bool leaveOpen) + // leaveOpen=true縺ァ髢九°縺ェ縺縺ィ縲[s縺碁哩縺倥※縺励∪縺縲 + using (var sr = new StreamReader(ms, Encoding.UTF8, true, 1024, true)) + { + Regex rx = new Regex(@"^(StartHTML:|EndHTML:)([0-9]+)"); + int lineCount = 0; + string s; + while ((s = sr.ReadLine()) != null) + { + lineCount++; + Match m = rx.Match(s); + if (m.Success) + { + int n = Convert.ToInt32(m.Groups[2].Value, 10); // 10騾イ + if (m.Groups[1].Value == "StartHTML:") + { + startHtml = n; + } + else + { + endHtml = n; + } + if (startHtml >= 0 && endHtml > startHtml) + { + break; + } + } + if (lineCount >= ExpectedHeaderMaxLines) + { + break; + } + } + } + + // HTML驛ィ蛻繧貞叙蠕(EndHTML縺ッ辟。隕) + ms.Position = startHtml; + using (var sr = new StreamReader(ms, Encoding.UTF8, false)) + { + return sr.ReadToEnd(); + } + } + + // stype繧ソ繧ー縺ョ荳ュ霄ォ繧定ソ斐☆ + static string GetStyleText(string htmlText, out int endPos) + { + string retString = null; + + endPos = 0; + int styleStartTagPos = 0; + int maxStyleTag = 50; + int styletagCounter = 0; + + while (styletagCounter < maxStyleTag) + { + styletagCounter++; + styleStartTagPos = htmlText.IndexOf("", styleStartTagPos); + if (styleEndTagPos < 0) + { + break; + } + endPos = styleEndTagPos + "".Length; + + int commentStartTagPos = htmlText.IndexOf("", commentStartTagPos); + if (commentStartTagPos >= 0 && commentEndTagPos > commentStartTagPos && commentEndTagPos < styleEndTagPos) + { + // 繧ウ繝。繝ウ繝医ち繧ー縺後≠繧句エ蜷医√さ繝。繝ウ繝医ち繧ー繧帝勁蜴サシ医さ繝。繝ウ繝医ち繧ー蜀縺ョ縺ソ繧定ソ斐☆シ + retString += htmlText.Substring(commentStartTagPos, commentEndTagPos - commentStartTagPos); + } + else + { + // 繧ウ繝。繝ウ繝医ち繧ー縺後↑縺蝣エ蜷 + retString += htmlText.Substring(styleStartTagPos, styleEndTagPos - styleStartTagPos); + } + styleStartTagPos = endPos; + } + return retString; + } + + static int IndexOfUsingRegex(string src, int startPos, Regex rTarget, out int length) + { + Match m = rTarget.Match(src, startPos); + if (!m.Success) + { + length = 0; + return -1; + } + length = m.Groups[0].Length; + return m.Groups[0].Index; + } + + // table繧ソ繧ー霎シ縺ソ縺ァ霑斐☆ + // 繝阪せ繝医ッ險ア螳ケ縺励↑縺(讀懷コ縺励※null繧定ソ斐☆) + static string GetFirstTableText(string htmlText, int pos) + { + int len; + int tableStartTagPos = IndexOfUsingRegex(htmlText, pos, rxTableBeginTag, out len); + if (tableStartTagPos < 0) + { + return null; + } + + int tableEndTagPos = htmlText.IndexOf("", tableStartTagPos + len); + if (tableEndTagPos < 0) + { + return null; + } + int dummy; + int tmpPos = IndexOfUsingRegex(htmlText, tableStartTagPos + len, rxTableBeginTag, out dummy); + + if (tmpPos >= 0 && tmpPos < tableEndTagPos) + { + // 繝阪せ繝医@縺ヲ縺繧具シ磯哩縺倥ち繧ー繧医j繧よ焔蜑阪ョ菴咲スョ縺ォ2縺、逶ョ縺ョ髢句ァ九ち繧ー繧呈、懷コ縺励◆シ + return null; + } + + tableEndTagPos += "".Length; + return htmlText.Substring(tableStartTagPos, tableEndTagPos - tableStartTagPos); + } + + + //static readonly Regex rxCss = new Regex(@":;", RegexOptions.Multiline | RegexOptions.IgnoreCase); + + //static Dictionary> ParseCssPart(string styleText) + //{ + //} + + // https://momdo.github.io/html/syntax.html#attributes-2 + // 螻樊ァ蜷阪ッ縲∝宛蠕。譁蟄励ゞ+0020 SPACE縲ゞ+0022シ"シ峨ゞ+0027シ'シ峨ゞ+003Eシ>シ峨ゞ+002Fシ/シ峨ゞ+003Dシ=シ峨√♀繧医ウ髱樊枚蟄嶺サ・螟悶ョ1縺、莉・荳翫ョ譁蟄励〒讒区舌&繧後↑縺代l縺ー縺ェ繧峨↑縺縲HTML讒区枚縺ォ縺翫>縺ヲ縲∝、匁擂隕∫エ縺ォ蟇セ縺吶k繧ゅョ縺ァ縺輔∴縲∝ア樊ァ蜷阪ッ縲、SCII蟆乗枚蟄励♀繧医ウASCII螟ァ譁蟄励ョ莉サ諢上ョ邨縺ソ蜷医o縺帙〒譖ク縺九l縺ヲ繧ゅh縺縲 + // 螻樊ァ蛟、縺ッ縲√ユ繧ュ繧ケ繝医′譖匁乂縺ェ繧「繝ウ繝代し繝ウ繝峨r蜷ォ繧√k縺薙→縺後〒縺阪↑縺霑ス蜉縺ョ蛻カ髯舌r繧ゅ▽蝣エ蜷医r髯、縺阪√ユ繧ュ繧ケ繝医♀繧医ウ譁蟄怜盾辣ァ縺ョ豺キ蜷育黄縺ァ縺ゅk縲 + // 蠑慕畑隨ヲ縺ァ蝗イ縺セ繧後↑縺螻樊ァ蛟、讒区枚 + // ASCII遨コ逋ス譁蟄 U+0022 QUOTATION MARK譁蟄暦シ"シ峨 + // U+0027 APOSTROPHE譁蟄暦シ'シ峨ゞ+003D EQUALS SIGN譁蟄暦シ=シ峨 + // U+003C LESS-THAN SIGN譁蟄暦シ<シ峨ゞ+003E GREATER-THAN SIGN譁蟄暦シ>シ峨 + // 縺セ縺溘ッU+0060 GRAVE ACCENT譁蟄暦シ`シ画枚蟄励r蜷ォ繧薙〒縺ッ縺ェ繧峨★縲√°縺、遨コ譁蟄怜励〒縺ゅ▲縺ヲ縺ッ縺ェ繧峨↑縺縲 + + // 1 = 2 3 4 + // <-------------------------------------> <--------------------------------> <-----> <-------> + // <----------------------------------------------------------------> + static readonly Regex rxAttr = new Regex(@"\b([^\x00-\x1F\x20\x22\x27\x2F\x3D\x3E]+)\s*(?:=\s*(?:([^\x20\x22\x27\x3C\x3D\x3E\x60]+)|'([^']*)'|\x22([^x22]*)\x22))?", RegexOptions.Multiline | RegexOptions.IgnoreCase); + + static Dictionary ParseAttrs(string attrsStr) + { + var dict = new Dictionary(); + + Match mAttr = rxAttr.Match(attrsStr); + while (mAttr.Success) + { + string key = mAttr.Groups[1].Value.ToLower(); + + string value = ""; + if (mAttr.Groups[2].Length > 0) + { + value = mAttr.Groups[2].Value; + } + else if (mAttr.Groups[3].Length > 0) + { + value = mAttr.Groups[3].Value; + } + else if (mAttr.Groups[4].Length > 0) + { + value = mAttr.Groups[4].Value; + } + else + { // without "=" + // do nothing + } + + if (!dict.ContainsKey(key)) + { + dict.Add(key, value); + } + + mAttr = mAttr.NextMatch(); + } + return dict; + } + + static string EscapeContentForAdocTableCell(string s) + { + // Replace (string input, string replacement); + s = rxTag.Replace(s, ""); // HTML蜈ィ闊ャ縺ョ繧ソ繧ー繧呈カ亥悉 + s = s.Replace("\r\n", " ") + .Replace("\n", " ") + .Replace("\r", " ") + .Replace("\t", " ") + .Replace(" ", " ") + .Replace("<", "<") + .Replace(">", ">") + .Replace("&", "&") + .Replace("|", "{VBar}"); // ADoc逕ィ + return s; + } + + static string ParseTableToAdoc(string tableText, Dictionary> classFormat) + { + var sb = new StringBuilder(); + Match m = rxTag.Match(tableText); + string lastStartTag = null; + int lastPos = -1; + int lastTdPos = -1; + int currentTdCount = 0; + int maxTdCount = 0; + + sb.AppendLine("|==="); + + while (m.Success) + { + if (m.Groups[1].Length > 0) + { + string tag = m.Groups[1].Value; + string attrsStr = m.Groups[2].Value; + lastPos = m.Groups[0].Index + m.Groups[0].Length; + + if (tag == "tr") + { + maxTdCount = Math.Max(maxTdCount, currentTdCount); + currentTdCount = 0; + } + else if (tag == "td") + { + lastTdPos = lastPos; + if (lastStartTag != "tr") + { + sb.Append(" "); + } + var attrs = ParseAttrs(attrsStr); + if (attrs.ContainsKey("colspan") || attrs.ContainsKey("rowspan")) + { + if (attrs.ContainsKey("colspan")) + { + sb.Append(attrs["colspan"]); + currentTdCount = currentTdCount + int.Parse(attrs["colspan"])-1; + } + if (attrs.ContainsKey("rowspan")) + { + sb.Append("."); + sb.Append(attrs["rowspan"]); + } + sb.Append("+"); + } + if (attrs.ContainsKey("class")) + { + var format = classFormat["default"]; + string classid = attrs["class"]; + if (classFormat.ContainsKey(classid)){ + format = classFormat[classid]; + } + sb.Append(format["text-align"].Replace("general", "<").Replace("left", "<").Replace("center", "^").Replace("right", ">")); + sb.Append("."); + sb.Append(format["vertical-align"].Replace("general", "<").Replace("top", "<").Replace("middle", "^").Replace("bottom", ">")); + } + else + { + var format = classFormat["default"]; + sb.Append(format["text-align"].Replace("general", "<").Replace("left", "<").Replace("center", "^").Replace("right", ">")); + sb.Append("."); + sb.Append(format["vertical-align"].Replace("general", "<").Replace("top", "<").Replace("middle", "^").Replace("bottom", ">")); + } + sb.Append("|"); + currentTdCount++; + } + lastStartTag = tag; + } + else if (m.Groups[3].Length > 0) + { + string tag = m.Groups[3].Value; + int tagStartPos = m.Groups[0].Index; + //Console.WriteLine(""); + if (tag == "tr") + { + sb.AppendLine(""); + } + else if (tag == "td") + { + string s = tableText.Substring(lastTdPos, tagStartPos - lastTdPos); + sb.Append(EscapeContentForAdocTableCell(s)); + lastTdPos = -1; + } + lastPos = -1; + lastStartTag = null; + } + + m = m.NextMatch(); + } + + sb.AppendLine("|==="); + + //謨エ蠖「 + sb = sb.Replace("<.<", ""); + string firstLine = "[cols=\"<.> classFormat = GetFormat(styleText); + string tableText = GetFirstTableText(htmlText, pos); + return ParseTableToAdoc(tableText, classFormat); + } + + static Dictionary> GetFormat(string styleText) + { + int maxFormatNum = 100; + int counter = 0; + int endPos = 0; + Regex reg = new Regex(@"[\t {};]"); + + // 繝繝輔か繝ォ繝亥、縺ョ繝繝輔か繝ォ繝亥、 + var dctDefault = new Dictionary(); + dctDefault.Add("color", "black"); + dctDefault.Add("background", "black"); + dctDefault.Add("text-align", "left"); + dctDefault.Add("vertical-align", "top"); + + // 繝繝輔か繝ォ繝亥、蜿門セ + int startTdTagPos = styleText.IndexOf("td\r\n\t{", 0); + int endTdTagPos = styleText.IndexOf(";}", startTdTagPos); + string defauletFromatText= styleText.Substring(startTdTagPos, endTdTagPos + ";}".Length-startTdTagPos); + var defaultLines = reg.Replace(defauletFromatText, "").Replace("\r\n", "\n").Split(new[] { '\n', '\r' }); + foreach (string line in defaultLines) + { + string[] words = line.Split(':'); + if (dctDefault.ContainsKey(words[0])) + { + dctDefault[words[0]] = words[1]; + } + } + + var ret = new Dictionary>(); + ret.Add("default", dctDefault); + + // 蜷繧ッ繝ゥ繧ケ縺ョ譖ク蠑上r蜿門セ + while (counter < maxFormatNum) + { + counter++; + + int formatStartTagPos = styleText.IndexOf(".xl", endPos); + if (formatStartTagPos < 0) + { + break; + } + formatStartTagPos += ".xl".Length; + + int formatEndTagPos = styleText.IndexOf(";}", formatStartTagPos); + if (formatEndTagPos < 0) + { + break; + } + endPos = formatEndTagPos + ";}".Length; + + string formatText = styleText.Substring(formatStartTagPos, endPos - formatStartTagPos); + var lines = reg.Replace(formatText, "").Replace("\r\n", "\n").Split(new[] { '\n', '\r' }); + + string classid = "xl" + lines[0]; + var dctFormat = new Dictionary(); + dctFormat.Add("color", dctDefault["color"]); + dctFormat.Add("background", dctDefault["background"]); + dctFormat.Add("text-align", dctDefault["text-align"]); + dctFormat.Add("vertical-align", dctDefault["vertical-align"]); + + foreach (string line in lines) + { + string[] words = line.Split(':'); + if (dctFormat.ContainsKey(words[0])) + { + dctFormat[words[0]] = words[1]; + } + } + ret.Add(classid, dctFormat); + } + return ret; + } + + [STAThread] + static void Main(string[] args) + { + Application.Run(new SampleForm()); + } + + private void InitializeComponent() + { + this.SuspendLayout(); + // + // SampleForm + // + this.ClientSize = new System.Drawing.Size(284, 261); + this.Name = "SampleForm"; + this.Load += new System.EventHandler(this.SampleForm_Load); + this.ResumeLayout(false); + + } + + private void SampleForm_Load(object sender, EventArgs e) + { + + } +} \ No newline at end of file diff --git a/Tool/ExcelToAdocConverter/source/EcxelToAdocConverter/ExcelToAdocConverter.resx b/Tool/ExcelToAdocConverter/source/EcxelToAdocConverter/ExcelToAdocConverter.resx new file mode 100644 index 0000000000000000000000000000000000000000..29dcb1b3a353ba227f65e11fbe3d6f0766e84292 --- /dev/null +++ b/Tool/ExcelToAdocConverter/source/EcxelToAdocConverter/ExcelToAdocConverter.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/Tool/ExcelToAdocConverter/source/EcxelToAdocConverter/Properties/AssemblyInfo.cs b/Tool/ExcelToAdocConverter/source/EcxelToAdocConverter/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000000000000000000000000000000000..864bbc601c1ce9bcf1777bca01d871614a30bb22 --- /dev/null +++ b/Tool/ExcelToAdocConverter/source/EcxelToAdocConverter/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +サソusing System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 繧「繧サ繝ウ繝悶Μ縺ォ髢「縺吶k荳闊ャ諠蝣ア縺ッ莉・荳九ョ螻樊ァ繧サ繝繝医r縺ィ縺翫@縺ヲ蛻カ蠕。縺輔l縺セ縺吶 +// 繧「繧サ繝ウ繝悶Μ縺ォ髢「騾」莉倥¢繧峨l縺ヲ縺繧区ュ蝣ア繧貞、画峩縺吶k縺ォ縺ッ縲 +// 縺薙l繧峨ョ螻樊ァ蛟、繧貞、画峩縺励※縺上□縺輔>縲 +[assembly: AssemblyTitle("EcxelToAdocConverter")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("EcxelToAdocConverter")] +[assembly: AssemblyCopyright("Copyright ツゥ 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisible 繧 false 縺ォ險ュ螳壹☆繧九→縲√%縺ョ繧「繧サ繝ウ繝悶Μ蜀縺ョ蝙九ッ COM 繧ウ繝ウ繝昴シ繝阪Φ繝医°繧 +// 蜿らァ縺ァ縺阪↑縺上↑繧翫∪縺吶COM 縺九i縺薙ョ繧「繧サ繝ウ繝悶Μ蜀縺ョ蝙九↓繧「繧ッ繧サ繧ケ縺吶k蠢隕√′縺ゅk蝣エ蜷医ッ縲 +// 縺昴ョ蝙九ョ ComVisible 螻樊ァ繧 true 縺ォ險ュ螳壹@縺ヲ縺上□縺輔>縲 +[assembly: ComVisible(false)] + +// 縺薙ョ繝励Ο繧ク繧ァ繧ッ繝医′ COM 縺ォ蜈ャ髢九&繧後k蝣エ蜷医∵ャ。縺ョ GUID 縺 typelib 縺ョ ID 縺ォ縺ェ繧翫∪縺 +[assembly: Guid("36aa7526-71ef-4009-b21e-55a0ff4cfa12")] + +// 繧「繧サ繝ウ繝悶Μ縺ョ繝舌シ繧ク繝ァ繝ウ諠蝣ア縺ッ谺。縺ョ 4 縺、縺ョ蛟、縺ァ讒区舌&繧後※縺縺セ縺: +// +// 繝。繧ク繝」繝シ 繝舌シ繧ク繝ァ繝ウ +// 繝槭う繝翫シ 繝舌シ繧ク繝ァ繝ウ +// 繝薙Ν繝臥分蜿キ +// Revision +// +// 縺吶∋縺ヲ縺ョ蛟、繧呈欠螳壹☆繧九°縲∵ャ。繧剃スソ逕ィ縺励※繝薙Ν繝臥分蜿キ縺ィ繝ェ繝薙ず繝ァ繝ウ逡ェ蜿キ繧呈里螳壹↓險ュ螳壹〒縺阪∪縺 +// 譌「螳壼、縺ォ縺吶k縺薙→縺後〒縺阪∪縺: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")]