Skip to content

Commit cacfa2c

Browse files
authored
Add MsExcelDiff support (#685)
1 parent 98d1898 commit cacfa2c

File tree

13 files changed

+141
-12
lines changed

13 files changed

+141
-12
lines changed

docs/diff-tool.md

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -483,7 +483,46 @@ DiffTools.UseOrder(DiffTool.KDiff3);
483483
* `/Applications/kdiff3.app/Contents/MacOS/kdiff3`
484484
* `%PATH%kdiff3`
485485

486-
### [MsWordDiff](https://github.com/SimonCropp/MsWordDiff)
486+
### [MsExcelDiff](https://github.com/SimonCropp/MsOfficeDiff)
487+
488+
* Cost: Free
489+
* Is MDI: False
490+
* Supports auto-refresh: False
491+
* Supports text files: False
492+
* Use shell execute: False
493+
* Create no window: True
494+
* Environment variable for custom install location: `DiffEngine_MsExcelDiff`
495+
* Supported binaries: .xls, .xlsx
496+
497+
#### Tool order:
498+
499+
Use [tool order](diff-tool.order.md) to prioritise MsExcelDiff over other tools.
500+
501+
```
502+
DiffTools.UseOrder(DiffTool.MsExcelDiff);
503+
```
504+
505+
#### Notes:
506+
507+
* Install via `dotnet tool install -g MsExcelDiff`
508+
* Requires Spreadsheet Compare (Office Professional Plus / Microsoft 365 Apps for Enterprise)
509+
* Uses Microsoft's Spreadsheet Compare to show differences between workbooks
510+
511+
#### Windows settings:
512+
513+
* Example target on left arguments:
514+
```
515+
"targetFile.txt" "tempFile.txt"
516+
```
517+
* Example target on right arguments:
518+
```
519+
"tempFile.txt" "targetFile.txt"
520+
```
521+
* Scanned paths:
522+
* `%USERPROFILE%\.dotnet\tools\diffexcel.exe`
523+
* `%PATH%diffexcel.exe`
524+
525+
### [MsWordDiff](https://github.com/SimonCropp/MsOfficeDiff)
487526

488527
* Cost: Free
489528
* Is MDI: False

docs/diff-tool.order.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ To change this file edit the source file and then run MarkdownSnippets.
3333
* **[VisualStudioCode](/docs/diff-tool.md#visualstudiocode)** Windows/OSX/Linux (Cost: Free)
3434
* **[Cursor](/docs/diff-tool.md#cursor)** Windows/OSX/Linux (Cost: Free and Paid)
3535
* **[VisualStudio](/docs/diff-tool.md#visualstudio)** Windows (Cost: Paid and free options)
36-
* **[MsWordDiff](/docs/diff-tool.md#msworddiff)** Windows (Cost: Free)<!-- endInclude -->
36+
* **[MsWordDiff](/docs/diff-tool.md#msworddiff)** Windows (Cost: Free)
37+
* **[MsExcelDiff](/docs/diff-tool.md#msexceldiff)** Windows (Cost: Free)<!-- endInclude -->
3738

3839

3940
## Custom order

readme.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,12 @@ DiffEngine manages launching and cleanup of diff tools. It is designed to be use
2929

3030
[Entity Framework Extensions](https://entityframework-extensions.net/?utm_source=simoncropp&utm_medium=DiffEngine) is a major sponsor and is proud to contribute to the development this project.
3131

32-
[![Entity Framework Extensions](https://raw.githubusercontent.com/VerifyTests/DiffEngine/refs/heads/main/docs/zzz.png)](https://entityframework-extensions.net/?utm_source=simoncropp&utm_medium=DiffEngine)<!-- endInclude -->
32+
[![Entity Framework Extensions](https://raw.githubusercontent.com/VerifyTests/DiffEngine/refs/heads/main/docs/zzz.png)](https://entityframework-extensions.net/?utm_source=simoncropp&utm_medium=DiffEngine)
33+
34+
### Developed using JetBrains IDEs
35+
36+
[![JetBrains logo.](https://resources.jetbrains.com/storage/products/company/brand/logos/jetbrains.svg)](https://jb.gg/OpenSourceSupport)<!-- endInclude -->
37+
3338

3439

3540
<!-- toc -->
@@ -83,7 +88,8 @@ DiffEngine manages launching and cleanup of diff tools. It is designed to be use
8388
* **[VisualStudioCode](/docs/diff-tool.md#visualstudiocode)** Windows/OSX/Linux (Cost: Free)
8489
* **[Cursor](/docs/diff-tool.md#cursor)** Windows/OSX/Linux (Cost: Free and Paid)
8590
* **[VisualStudio](/docs/diff-tool.md#visualstudio)** Windows (Cost: Paid and free options)
86-
* **[MsWordDiff](/docs/diff-tool.md#msworddiff)** Windows (Cost: Free)<!-- endInclude -->
91+
* **[MsWordDiff](/docs/diff-tool.md#msworddiff)** Windows (Cost: Free)
92+
* **[MsExcelDiff](/docs/diff-tool.md#msexceldiff)** Windows (Cost: Free)<!-- endInclude -->
8793

8894

8995
## Launching a tool

src/DiffEngine.Tests/DiffRunnerTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ public async Task LaunchAndKillDisabled()
9494
{
9595
await Assert.That(IsRunning()).IsFalse();
9696
await Assert.That(ProcessCleanup.IsRunning(command)).IsFalse();
97-
var result = DiffRunner.Launch(file1, file2);
97+
var result = await DiffRunner.LaunchAsync(file1, file2);
9898
await Assert.That(result).IsEqualTo(LaunchResult.Disabled);
9999
Thread.Sleep(500);
100100
ProcessCleanup.Refresh();
@@ -143,7 +143,7 @@ public async Task LaunchAndKill()
143143
{
144144
await Assert.That(IsRunning()).IsFalse();
145145
await Assert.That(ProcessCleanup.IsRunning(command)).IsFalse();
146-
var result = DiffRunner.Launch(file1, file2);
146+
var result = await DiffRunner.LaunchAsync(file1, file2);
147147
await Assert.That(result).IsEqualTo(LaunchResult.StartedNewInstance);
148148
Thread.Sleep(500);
149149
ProcessCleanup.Refresh();

src/DiffEngine.Tests/defaultOrder.include.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,4 @@
2222
* **[Cursor](/docs/diff-tool.md#cursor)** Windows/OSX/Linux (Cost: Free and Paid)
2323
* **[VisualStudio](/docs/diff-tool.md#visualstudio)** Windows (Cost: Paid and free options)
2424
* **[MsWordDiff](/docs/diff-tool.md#msworddiff)** Windows (Cost: Free)
25+
* **[MsExcelDiff](/docs/diff-tool.md#msexceldiff)** Windows (Cost: Free)

src/DiffEngine.Tests/diffToolList.include.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,4 @@
2222
* **[Cursor](/docs/diff-tool.md#cursor)** Windows/OSX/Linux (Cost: Free and Paid)
2323
* **[VisualStudio](/docs/diff-tool.md#visualstudio)** Windows (Cost: Paid and free options)
2424
* **[MsWordDiff](/docs/diff-tool.md#msworddiff)** Windows (Cost: Free)
25+
* **[MsExcelDiff](/docs/diff-tool.md#msexceldiff)** Windows (Cost: Free)

src/DiffEngine.Tests/diffTools.include.md

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,46 @@ DiffTools.UseOrder(DiffTool.KDiff3);
348348
* `/Applications/kdiff3.app/Contents/MacOS/kdiff3`
349349
* `%PATH%kdiff3`
350350

351-
### [MsWordDiff](https://github.com/SimonCropp/MsWordDiff)
351+
### [MsExcelDiff](https://github.com/SimonCropp/MsOfficeDiff)
352+
353+
* Cost: Free
354+
* Is MDI: False
355+
* Supports auto-refresh: False
356+
* Supports text files: False
357+
* Use shell execute: False
358+
* Create no window: True
359+
* Environment variable for custom install location: `DiffEngine_MsExcelDiff`
360+
* Supported binaries: .xls, .xlsx
361+
362+
#### Tool order:
363+
364+
Use [tool order](diff-tool.order.md) to prioritise MsExcelDiff over other tools.
365+
366+
```
367+
DiffTools.UseOrder(DiffTool.MsExcelDiff);
368+
```
369+
370+
#### Notes:
371+
372+
* Install via `dotnet tool install -g MsExcelDiff`
373+
* Requires Spreadsheet Compare (Office Professional Plus / Microsoft 365 Apps for Enterprise)
374+
* Uses Microsoft's Spreadsheet Compare to show differences between workbooks
375+
376+
#### Windows settings:
377+
378+
* Example target on left arguments:
379+
```
380+
"targetFile.txt" "tempFile.txt"
381+
```
382+
* Example target on right arguments:
383+
```
384+
"tempFile.txt" "targetFile.txt"
385+
```
386+
* Scanned paths:
387+
* `%USERPROFILE%\.dotnet\tools\diffexcel.exe`
388+
* `%PATH%diffexcel.exe`
389+
390+
### [MsWordDiff](https://github.com/SimonCropp/MsOfficeDiff)
352391

353392
* Cost: Free
354393
* Is MDI: False

src/DiffEngine/Definitions.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ static Definitions() =>
3030
Implementation.VisualStudioCode(),
3131
Implementation.Cursor(),
3232
Implementation.VisualStudio(),
33-
Implementation.MsWordDiff()
33+
Implementation.MsWordDiff(),
34+
Implementation.MsExcelDiff()
3435
];
3536
}

src/DiffEngine/DiffTool.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,6 @@ public enum DiffTool
2525
VisualStudioCode,
2626
VisualStudio,
2727
Cursor,
28-
MsWordDiff
28+
MsWordDiff,
29+
MsExcelDiff
2930
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
static partial class Implementation
2+
{
3+
public static Definition MsExcelDiff()
4+
{
5+
var launchArguments = new LaunchArguments(
6+
Left: (temp, target) => $"\"{target}\" \"{temp}\"",
7+
Right: (temp, target) => $"\"{temp}\" \"{target}\"");
8+
9+
return new(
10+
Tool: DiffTool.MsExcelDiff,
11+
Url: "https://github.com/SimonCropp/MsOfficeDiff",
12+
AutoRefresh: false,
13+
IsMdi: false,
14+
SupportsText: false,
15+
RequiresTarget: true,
16+
BinaryExtensions:
17+
[
18+
".xlsx",
19+
".xls"
20+
],
21+
Cost: "Free",
22+
OsSupport: new(
23+
Windows: new(
24+
"diffexcel.exe",
25+
launchArguments,
26+
@"%USERPROFILE%\.dotnet\tools\")),
27+
UseShellExecute: false,
28+
CreateNoWindow: true,
29+
KillLockingProcess: true,
30+
Notes: """
31+
* Install via `dotnet tool install -g MsExcelDiff`
32+
* Requires Spreadsheet Compare (Office Professional Plus / Microsoft 365 Apps for Enterprise)
33+
* Uses Microsoft's Spreadsheet Compare to show differences between workbooks
34+
""");
35+
}
36+
}

0 commit comments

Comments
 (0)