我的资源文件夹中有许多小PowerPoint
个文件,我想打开它们。由于我的Resource.sendToPPTTemp
类型为byte[]
而我打开文件我需要它作为字符串,因此我遇到了问题。有没有办法可以将资源中的文件作为字符串打开?
var file = Resources.sendToPPTTemp;
ppnt.Application ppntApplication = new ppnt.Application();
var _assembly = Assembly.GetExecutingAssembly();
var myppnt = ppntApplication.Presentations.Open(file.ToString());
ppntApplication.Visible = MsoTriState.msoTrue;
答案 0 :(得分:0)
您需要将文件的路径提供给Open
方法,而不是二进制表示。您有路径并将其传递给方法,或者您必须使用byte []创建一个文件。
我宁愿创建一个包含所有PPT的文件夹,并在资源文件中存储该文件夹的路径。然后你可以使用第一种方法:
var di = new DirectoryInfo(Resources.PPTFolderPath);
foreach(var file in di.GetFiles())
{
var myppnt = ppntApplication.Presentations.Open(fi.FullName);
ppntApplication.Visible = MsoTriState.msoTrue;
[..]
}
但是如果你真的想将PPT存储在资源文件中,你可以像这样使用临时文件:
var tmpPath = Path.GetTempFileName();
try
{
File.WriteAllBytes(tmpPath, Resources.sendToPPTTemp);
var myppnt = ppntApplication.Presentations.Open(tmpPath);
ppntApplication.Visible = MsoTriState.msoTrue;
[..]
}
finally
{
// you have to delete your tmp file at the end!!!
// probably not the better way to do it because I guess the program does not block on Open.
// Better store the file path into a list and delete later.
var fi = new FileInfo(tmpPath);
fi.Delete();
}