added .xlt
This commit is contained in:
parent
55e1b7a73d
commit
d66c521db0
|
|
@ -29,12 +29,13 @@
|
|||
<Button x:Name="btnDestFolder" Content="btnDest" Margin="545,171,0,0" VerticalAlignment="Top" Click="btnDestFolder_Click"/>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
<GroupBox x:Name="grpFiles" Header="grpFiles" Margin="709,10,0,0" Height="182" VerticalAlignment="Top" HorizontalAlignment="Left" Width="300">
|
||||
<GroupBox x:Name="grpFiles" Header="grpFiles" Margin="709,10,0,0" Height="243" VerticalAlignment="Top" HorizontalAlignment="Left" Width="300">
|
||||
<Grid>
|
||||
<CheckBox x:Name="chkWord" Content="Word .doc" HorizontalAlignment="Left" Margin="0,10,0,0" VerticalAlignment="Top"/>
|
||||
<CheckBox x:Name="chkExcel" Content="Excel .xls" HorizontalAlignment="Left" Margin="0,45,0,0" VerticalAlignment="Top"/>
|
||||
<CheckBox x:Name="chkPowerpoint" Content="PowerPoint .ppt" HorizontalAlignment="Left" Margin="0,80,0,0" VerticalAlignment="Top"/>
|
||||
<CheckBox x:Name="chkWordTmpl" Content="Wordtemplates .dot" HorizontalAlignment="Left" Margin="0,115,0,0" VerticalAlignment="Top"/>
|
||||
<CheckBox x:Name="chkExcelTmpl" Content="Exceltemplates .xlt" HorizontalAlignment="Left" Margin="0,150,0,0" VerticalAlignment="Top"/>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
<GroupBox x:Name="grpSourceFiles" Header="grpSourceFiles" Margin="10,291,0,0" Height="259" VerticalAlignment="Top" HorizontalAlignment="Left" Width="497">
|
||||
|
|
@ -47,7 +48,7 @@
|
|||
<ListBox x:Name="lstDestFiles" ItemsSource="{Binding convertedFiles}" />
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
<Button x:Name="btnConvert" Content="Button" HorizontalAlignment="Left" Margin="10,577,0,0" VerticalAlignment="Top" Width="174" Height="42" Click="btnConvert_Click"/>
|
||||
<Button x:Name="btnConvert" Content="Button" HorizontalAlignment="Left" Margin="10,555,0,0" VerticalAlignment="Top" Width="174" Height="42" Click="btnConvert_Click"/>
|
||||
<Label x:Name="lblState" Content="lblState" HorizontalAlignment="Left" Margin="709,258,0,0" VerticalAlignment="Top" Width="300" Height="28"/>
|
||||
<Button x:Name="btnExport" Content="btnExport" HorizontalAlignment="Left" Height="33" Margin="915,555,0,0" VerticalAlignment="Top" Width="94" Click="btnExport_Click"/>
|
||||
<Button x:Name="btnDelete" Content="btnDelete" HorizontalAlignment="Left" Margin="793,555,0,0" VerticalAlignment="Top" Width="117" Height="33" Click="btnDelete_Click"/>
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ namespace OfficeConverter
|
|||
bool doExcel = false;
|
||||
bool doPPoint = false;
|
||||
bool doWordTmpl = false;
|
||||
bool doExcelTmpl = false;
|
||||
string errorFolderEmpty = "";
|
||||
|
||||
public MainWindow()
|
||||
|
|
@ -78,6 +79,7 @@ namespace OfficeConverter
|
|||
doExcel = (bool)chkExcel.IsChecked;
|
||||
doPPoint = (bool)chkPowerpoint.IsChecked;
|
||||
doWordTmpl = (bool)chkWordTmpl.IsChecked;
|
||||
doExcelTmpl = (bool)chkExcelTmpl.IsChecked;
|
||||
|
||||
// Check if the background worker is not already running
|
||||
if (!backgroundWorker.IsBusy)
|
||||
|
|
@ -163,6 +165,8 @@ namespace OfficeConverter
|
|||
string[] xlsFiles = null;
|
||||
string[] pptFiles = null;
|
||||
string[] dotFiles = null;
|
||||
string[] xltFiles = null;
|
||||
|
||||
|
||||
if (doWord)
|
||||
{
|
||||
|
|
@ -180,6 +184,10 @@ namespace OfficeConverter
|
|||
{
|
||||
dotFiles = Directory.GetFiles(folderPath, "*.dot");
|
||||
}
|
||||
if (doExcelTmpl)
|
||||
{
|
||||
dotFiles = Directory.GetFiles(folderPath, "*.dot");
|
||||
}
|
||||
|
||||
// Check for null before adding to combinedFiles
|
||||
if (docFiles != null)
|
||||
|
|
@ -198,7 +206,10 @@ namespace OfficeConverter
|
|||
{
|
||||
combinedFiles.AddRange(dotFiles);
|
||||
}
|
||||
|
||||
if (xltFiles != null)
|
||||
{
|
||||
combinedFiles.AddRange(xltFiles);
|
||||
}
|
||||
Console.WriteLine($"Processing files in folder: {folderPath}");
|
||||
|
||||
/// Create a copy of the collection to avoid modification during iteration
|
||||
|
|
@ -298,6 +309,9 @@ namespace OfficeConverter
|
|||
case ".dot":
|
||||
ConvertDocToDotx(filePath, doSubfolders, doReplace);
|
||||
break;
|
||||
case ".xlt":
|
||||
ConvertXltToXltxAsync(filePath, doSubfolders, doReplace);
|
||||
break;
|
||||
|
||||
default:
|
||||
// Handle other file types or show an error message
|
||||
|
|
@ -359,6 +373,65 @@ namespace OfficeConverter
|
|||
KillProcess("EXCEL");
|
||||
}
|
||||
}
|
||||
private async Task ConvertXltToXltxAsync(string xltFile, bool doSubfolders, bool doReplace)
|
||||
{
|
||||
await Task.Run(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
Excel.Application excelApp = new Excel.Application();
|
||||
excelApp.DisplayAlerts = false;
|
||||
|
||||
try
|
||||
{
|
||||
Excel.Workbook workbook = excelApp.Workbooks.Open(xltFile);
|
||||
|
||||
string targetFolderPath = "";
|
||||
|
||||
// Use Dispatcher.Invoke to execute code on the UI thread
|
||||
Dispatcher.Invoke(() =>
|
||||
{
|
||||
targetFolderPath = GetTargetFolderPath(doReplace, doSubfolders, xltFile);
|
||||
});
|
||||
|
||||
// Ensure the target folder exists
|
||||
if (!Directory.Exists(targetFolderPath))
|
||||
{
|
||||
Directory.CreateDirectory(targetFolderPath);
|
||||
}
|
||||
|
||||
// Construct the new path for the .xltx file
|
||||
string newXltxPath = Path.Combine(targetFolderPath, Path.ChangeExtension(Path.GetFileName(xltFile), ".xltx"));
|
||||
workbook.SaveAs(newXltxPath, Excel.XlFileFormat.xlOpenXMLTemplate);
|
||||
workbook.Close();
|
||||
}
|
||||
finally
|
||||
{
|
||||
// Quit Excel and release resources
|
||||
excelApp.Quit();
|
||||
Marshal.ReleaseComObject(excelApp);
|
||||
|
||||
// Ensure Excel processes are terminated
|
||||
KillProcess("EXCEL");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// Handle exceptions during conversion
|
||||
Console.WriteLine($"Error converting {xltFile}: {ex.Message}");
|
||||
}
|
||||
});
|
||||
|
||||
// Update UI on the main thread
|
||||
System.Windows.Application.Current.Dispatcher.Invoke(() =>
|
||||
{
|
||||
combinedFiles.Remove(xltFile);
|
||||
convertedFiles.Add(xltFile);
|
||||
|
||||
DisplayCombinedFiles();
|
||||
});
|
||||
}
|
||||
|
||||
private void ConvertPptToPptx(string pptFile, bool doSubfolders, bool doReplace)
|
||||
{
|
||||
PowerPoint.Application pptApp = new PowerPoint.Application();
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user