发现这显然是一个软件包错误。 使用 Nuget 包 DocX 工作正常
我试图从文件夹中读取文件并将其另存为不同的扩展名。处理这个问题的正确方法是什么?我通读了文件夹并遇到了文件路径,例如:
C:\用户\xx\Desktop_REPOS\刮板\阅读问题\第 1 周\239523-1094170 - yyy - 2017年8月24日 下午148 - 简答题 8月21日.docx
我的代码错误
文件加载异常:无法加载文件或程序集"System.IO.Packaging,版本=4.0.2.0,区域性=中性,公钥令牌=b03f5f7f11d50a3a"。找到的程序集的清单定义与程序集引用不匹配。(HRESULT的例外:0x80131040(
我尝试了这篇文章中的解决方案并收到此错误
System.IO.IOException: '文件名、目录名或卷标语法不正确: 'C:\Users\king\Desktop_REPOS\scraper\scraper\bin\Debugetcoreapp2.1\"C:\Users\king\Desktop_REPOS\scraper\阅读问题\第 1 周\239523-1094170 - yyy - 2017 年 8 月 24 日 下午 148 点 - 简答 8 月 21 日.docx"''
我使用的我的代码示例
foreach (string path in Directory.EnumerateFiles(@"C:UsersxxDesktop_REPOSscraperReading QuestionsWeek 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);
}
我最终确认这是一个软件包错误并切换到使用 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;
}