发现这显然是程序包错误。使用Nuget软件包DocX可以很好地工作
我正在尝试从文件夹中读取文件,并将其另存为其他扩展名。处理此问题的正确方法是什么?我通读了文件夹,遇到了文件路径,例如:
C:\ Users \ xx \ Desktop_REPOS \ scraper \ Reading Questions \ Week 1 \ 239523-1094170-yyy-2017年8月24日148 PM-简短答案Aug 21.docx
我的代码错误
FileLoadException:无法加载文件或程序集'System.IO.Packaging,版本= 4.0.2.0,区域性=中性,PublicKeyToken = b03f5f7f11d50a3a'。找到的程序集的清单定义与程序集引用不匹配。 (来自HRESULT的异常:0x80131040)
我尝试了this post的解决方案,但收到此错误
System.IO.IOException:'文件名,目录名或卷标语法不正确:'C:\ Users \ king \ Desktop_REPOS \ scraper \ scraper \ bin \ Debug \ netcoreapp2.1 \“ C:\ Users \ king \ Desktop_REPOS \ scraper \ Reading Questions \ Week 1 \ 239523-1094170-yyy-2017年8月24日148 PM-简短回答Aug 21.docx“''
foreach (string path in Directory.EnumerateFiles(@"C:\Users\xx\Desktop\_REPOS\scraper\Reading Questions\Week 1", "*.*", SearchOption.AllDirectories)
.Where(s => s.EndsWith(".pdf") || s.EndsWith(".docx")))
{
FileToTxt(path);
//FileToTxt(AddQuotesIfRequired(path));
Console.WriteLine("converted: " + Path.GetFileName(path));
}
public static void FileToTxt(string filepath)
{
//Install-Package sautinsoft.document
string textFilePath = Path.ChangeExtension(filepath, ".txt");
DocumentCore docx = DocumentCore.Load(filepath); ////////---ERROR HERE
docx.Save(textFilePath, SaveOptions.TxtDefault);
}
答案 0 :(得分:0)
我最终确定这是一个程序包错误,并转而使用DocX
这是我最后的工作解决方案:
public static bool FileToTxt(string filepath)
{
try {
//Install-Package DocX
string textFilePath = Path.ChangeExtension(filepath, ".txt");
DocX docx = DocX.Load(filepath);
File.WriteAllText(textFilePath, docx.Text);
}catch(Exception e)
{
Console.WriteLine($"{Path.GetFileName(filepath)} error: {e.Message}");
return false;
}
return true;
}