Skip to content

Commit 61ea2d6

Browse files
authored
Merge pull request #55 from andy505050/main
Support multiple color word by word
2 parents 4a739fc + 97fd7c3 commit 61ea2d6

File tree

3 files changed

+41
-12
lines changed

3 files changed

+41
-12
lines changed

src/MiniWord/Extensions/ObjectExtension.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ internal static Dictionary<string, object> ToDictionary(this object value)
7878
}
7979
internal static bool IsStrongTypeEnumerable(this object obj)
8080
{
81-
return obj is IEnumerable && !(obj is string) && !(obj is char[]) && !(obj is string[]);
82-
}
81+
return obj is IEnumerable && !(obj is string) && !(obj is char[]) && !(obj is string[]) && !(obj is MiniWordColorText[]);
82+
}
8383
}
8484
}

src/MiniWord/MiniWord.Implment.cs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -439,10 +439,11 @@ private static void ReplaceText(OpenXmlElement xmlElement, WordprocessingDocumen
439439
AddHyperLink(docx, run, tag.Value);
440440
t.Remove();
441441
}
442-
else if (tag.Value is MiniWordColorText)
442+
else if (tag.Value is MiniWordColorText || tag.Value is MiniWordColorText[])
443443
{
444-
var miniWordColorText = (MiniWordColorText)tag.Value;
445-
var colorText = AddColorText(miniWordColorText);
444+
var colorText = tag.Value is MiniWordColorText
445+
? AddColorText(new[] { (MiniWordColorText)tag.Value })
446+
: AddColorText((MiniWordColorText[])tag.Value);
446447
run.Append(colorText);
447448
t.Remove();
448449
}
@@ -533,16 +534,19 @@ private static Hyperlink GetHyperLink(MainDocumentPart mainPart, MiniWordHyperLi
533534
};
534535
return xmlHyperLink;
535536
}
536-
private static RunProperties AddColorText(MiniWordColorText miniWordColorText)
537+
private static RunProperties AddColorText(MiniWordColorText[] miniWordColorTextArray)
537538
{
538539

539540
RunProperties runPro = new RunProperties();
540-
Text text = new Text(miniWordColorText.Text);
541-
Color color = new Color() { Val = miniWordColorText.FontColor?.Replace("#", "") };
542-
Shading shading = new Shading() { Fill = miniWordColorText.HighlightColor?.Replace("#", "") };
543-
runPro.Append(shading);
544-
runPro.Append(color);
545-
runPro.Append(text);
541+
foreach (var miniWordColorText in miniWordColorTextArray)
542+
{
543+
Text text = new Text(miniWordColorText.Text);
544+
Color color = new Color() { Val = miniWordColorText.FontColor?.Replace("#", "") };
545+
Shading shading = new Shading() { Fill = miniWordColorText.HighlightColor?.Replace("#", "") };
546+
runPro.Append(shading);
547+
runPro.Append(color);
548+
runPro.Append(text);
549+
}
546550

547551
return runPro;
548552
}

tests/MiniWordTests/IssueTests.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -784,6 +784,31 @@ public void TestColor()
784784
MiniWord.SaveAsByTemplate(path, templatePath, value);
785785
}
786786

787+
[Fact]
788+
public void TestMultipleColorWordByWord()
789+
{
790+
var path = PathHelper.GetTempFilePath();
791+
var templatePath = PathHelper.GetFile("TestBasicFill.docx");
792+
var value = new
793+
{
794+
Company_Name = new MiniWordColorText { Text = "MiniSofteware", FontColor = "#eb70AB", },
795+
Name = new[] {
796+
new MiniWordColorText { Text = "Ja", HighlightColor = "#eb70AB" },
797+
new MiniWordColorText { Text = "ck", HighlightColor = "#a56abe" }
798+
},
799+
CreateDate = new MiniWordColorText
800+
{
801+
Text = new DateTime(2021, 01, 01).ToString(),
802+
HighlightColor = "#eb70AB",
803+
FontColor = "#ffffff",
804+
},
805+
VIP = true,
806+
Points = 123,
807+
APP = "Demo APP",
808+
};
809+
MiniWord.SaveAsByTemplate(path, templatePath, value);
810+
}
811+
787812

788813
#region Model:TestIssue18.docx
789814
public class Foo

0 commit comments

Comments
 (0)