将文件的完整路径和名称解析为 C# 控制台应用程序
Parse the file fullpath and name into c# console app
我尝试实现一个应用程序,它允许我将 PPT 或 PPTX 文件转换为 jpg,我计划在我的电脑上全局使用它。我面临的问题是我不知道如何解析我在应用程序中打开的文件。基本上,当我打开特定文件时,我需要应用程序获取完整路径和文件名,因此硬编码某些特定路径是不可能的。
总体思路:我将一个 ppt 文件拖到 .exe 文件上,然后它处理 ppt 文件,最后我有一个包含所有 jpg 的文件夹,与 ppt 位于同一位置。这是我目前所拥有的:
using Microsoft.Office.Core;
using System;
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
namespace PPInterop
{
class Program
{
static void Main(string[] args)
{
var app = new PowerPoint.Application();
var pres = app.Presentations;
var file = pres.Open(@"C:\presentation1.jpg", MsoTriState.msoTrue, MsoTriState.msoTrue, MsoTriState.msoFalse);
file.SaveCopyAs(@"C:\presentation1.jpg", PowerPoint.PpSaveAsFileType.ppSaveAsJPG, MsoTriState.msoTrue);
Console.ReadKey();
}
}
}
关于解析,我认为您已经找到了 Microsoft 通过使用 Microsoft.Office.Interop.PowerPoint
.
中的代码来执行此操作的方法
但是您加载的是 JPG 而不是 PPT 或 PPTX 文件。使用 args
也应该可以拖放,因为(至少 Windows)将 运行 应用程序将拖动的文件作为参数(参见 )。
所以我认为可能是这样的:
static void Main(string[] args)
{
if (args.Length == 0)
throw new Exception("No presentation file given");
var presentationFilePath = new FileInfo(args[0]);
if (presentationFilePath.Exists == false)
throw new FileNotFoundException("No presentation given");
var app = new PowerPoint.Application();
var presentation = app.Presentations.Open(presentationFilePath, MsoTriState.msoTrue, MsoTriState.msoTrue, MsoTriState.msoFalse);
var jpgName = Path.GetFileNameWithoutExtension(presentationFilePath.FullName) + ".jpg";
presentation.SaveCopyAs(jpgName, PowerPoint.PpSaveAsFileType.ppSaveAsJPG, MsoTriState.msoTrue);
Console.WriteLine("Converted " + presentationFilePath + " to " + jpgName);
}
我尝试实现一个应用程序,它允许我将 PPT 或 PPTX 文件转换为 jpg,我计划在我的电脑上全局使用它。我面临的问题是我不知道如何解析我在应用程序中打开的文件。基本上,当我打开特定文件时,我需要应用程序获取完整路径和文件名,因此硬编码某些特定路径是不可能的。
总体思路:我将一个 ppt 文件拖到 .exe 文件上,然后它处理 ppt 文件,最后我有一个包含所有 jpg 的文件夹,与 ppt 位于同一位置。这是我目前所拥有的:
using Microsoft.Office.Core;
using System;
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
namespace PPInterop
{
class Program
{
static void Main(string[] args)
{
var app = new PowerPoint.Application();
var pres = app.Presentations;
var file = pres.Open(@"C:\presentation1.jpg", MsoTriState.msoTrue, MsoTriState.msoTrue, MsoTriState.msoFalse);
file.SaveCopyAs(@"C:\presentation1.jpg", PowerPoint.PpSaveAsFileType.ppSaveAsJPG, MsoTriState.msoTrue);
Console.ReadKey();
}
}
}
关于解析,我认为您已经找到了 Microsoft 通过使用 Microsoft.Office.Interop.PowerPoint
.
但是您加载的是 JPG 而不是 PPT 或 PPTX 文件。使用 args
也应该可以拖放,因为(至少 Windows)将 运行 应用程序将拖动的文件作为参数(参见
所以我认为可能是这样的:
static void Main(string[] args)
{
if (args.Length == 0)
throw new Exception("No presentation file given");
var presentationFilePath = new FileInfo(args[0]);
if (presentationFilePath.Exists == false)
throw new FileNotFoundException("No presentation given");
var app = new PowerPoint.Application();
var presentation = app.Presentations.Open(presentationFilePath, MsoTriState.msoTrue, MsoTriState.msoTrue, MsoTriState.msoFalse);
var jpgName = Path.GetFileNameWithoutExtension(presentationFilePath.FullName) + ".jpg";
presentation.SaveCopyAs(jpgName, PowerPoint.PpSaveAsFileType.ppSaveAsJPG, MsoTriState.msoTrue);
Console.WriteLine("Converted " + presentationFilePath + " to " + jpgName);
}