static void Main(string[] args) { docParser doc = new docParser("test.doc"); if (doc.docIsOK == true) { string str = doc.getText(); File.WriteAllText("DOCtest.txt", str); } docxParser docx = new docxParser("test.docx"); if (docx.docxIsOK == true) { string str = docx.getText(); File.WriteAllText("DOCXtest.txt", str); } Console.WriteLine("Press any key..."); Console.ReadKey(true); }
protected internal void ReadManyFiles(out string FilePath, bool Quiet = false) //пакетное чтение файлов { bool res = false; //результат чтения из файла int totalFiles = 0, //всего DOC файлов в папке readFiles = 0; //прочитано подходящих файлов FilePath = null; //папка с файлами //диалог выбора папки FolderBrowserDialog fbd = new FolderBrowserDialog(); fbd.Description = "Выберите папку с градуировочными таблицами"; fbd.ShowNewFolderButton = false; if (fbd.ShowDialog() == DialogResult.OK) { FilePath = fbd.SelectedPath; //сохранили выбранную папку //берем список файлов в ней и проверяем каждый string[] ListOfFiles = Directory.GetFiles(FilePath); foreach (string tmpFilePath in ListOfFiles) { FileInfo fi = new FileInfo(tmpFilePath); if (fi.Extension == ".doc" || fi.Extension == ".docx") //нам нужны только DOC и DOCX { totalFiles++; //увеличим счетчик документов word //классы для чтения файла docParser docFile = null; docxParser docxFile = null; //временные переменные string tmpFileData = null; string tmpFileId = ""; //заполнили ID файла tmpFileId = Path.GetFileNameWithoutExtension(tmpFilePath); switch (Path.GetExtension(tmpFilePath).ToLower()) //определим расширение выбранного файла { case ".doc": //читаем как DOC docFile = new docParser(tmpFilePath); if (docFile?.docIsOK == true) { tmpFileData = docFile.getText(); OnFileRead(new FileEventArgs(true, "Прочитан файл: " + Path.GetFileName(tmpFilePath))); } break; case ".docx": //читаем как DOCX docxFile = new docxParser(tmpFilePath); if (docxFile?.docxIsOK == true) { tmpFileData = docxFile.getText(); OnFileRead(new FileEventArgs(true, "Прочитан файл: " + Path.GetFileName(tmpFilePath))); } break; } if (tmpFileData == null) //если прочитать как DOC и DOCX не удалось { //читаем как текстовый файл try { StreamReader sr = new StreamReader(File.OpenRead(tmpFilePath), Encoding.Default); tmpFileData = sr.ReadToEnd(); OnFileRead(new FileEventArgs(true, "Прочитан файл: " + Path.GetFileName(tmpFilePath))); } catch (Exception) { OnFileRead(new FileEventArgs(false, "Не удалось прочитать файл: " + Path.GetFileName(tmpFilePath))); continue; } } if (tmpFileData.IndexOf(TextPattern.FileIsCorrect) != -1) //проверяем, что файл нам подходит { readFiles++; //увеличим счетчик прочитанных документов //сохраним данные по документам Array.Resize(ref filePath, readFiles); filePath[readFiles - 1] = tmpFilePath; Array.Resize(ref fileId, readFiles); fileId[readFiles - 1] = tmpFileId; Array.Resize(ref fileData, readFiles); fileData[readFiles - 1] = tmpFileData; } } } } if (readFiles != 0) { res = true; //если прочитан хоть один файл } //генерация событий if (!Quiet) { if (FilePath == null) { OnManyFilesRead(new FileEventArgs(false, "Папка не выбрана")); } else { OnManyFilesRead(new FileEventArgs(true, "В папке " + FilePath + " обнаружено " + totalFiles + " документов Word")); if (res) { OnManyFilesRead(new FileEventArgs(res, "\tуспешно прочитано " + readFiles + " документов, содержащих градуировочные таблицы")); } else { OnManyFilesRead(new FileEventArgs(res, "\tдокументов, содержащих градуировочные таблицы не обнаружено")); } } } }
protected internal void ReadOneFile() //чтение одного файла { string tmpFilePath = ""; //временные путь к файлу tmpFilePath = _chooseFile(); //выбор файла if (tmpFilePath != null) { //классы для чтения файла docParser docFile = null; docxParser docxFile = null; //временные переменные string tmpFileData = null; string tmpFileId = ""; //заполнили ID файла tmpFileId = Path.GetFileNameWithoutExtension(tmpFilePath); switch (Path.GetExtension(tmpFilePath).ToLower()) //определим расширение выбранного файла { case ".doc": //читаем как DOC docFile = new docParser(tmpFilePath); if (docFile?.docIsOK == true) { tmpFileData = docFile.getText(); OnFileRead(new FileEventArgs(true, "Прочитан файл: " + Path.GetFileName(tmpFilePath))); } break; case ".docx": //читаем как DOCX docxFile = new docxParser(tmpFilePath); if (docxFile?.docxIsOK == true) { tmpFileData = docxFile.getText(); OnFileRead(new FileEventArgs(true, "Прочитан файл: " + Path.GetFileName(tmpFilePath))); } break; } if (tmpFileData == null) //если прочитать как DOC и DOCX не удалось { //читаем как текстовый файл try { StreamReader sr = new StreamReader(File.OpenRead(tmpFilePath), Encoding.Default); tmpFileData = sr.ReadToEnd(); OnFileRead(new FileEventArgs(true, "Прочитан файл: " + Path.GetFileName(tmpFilePath))); } catch (Exception) { OnFileRead(new FileEventArgs(false, "Не удалось прочитать файл: " + Path.GetFileName(tmpFilePath))); return; } } if (tmpFileData.IndexOf(TextPattern.FileIsCorrect) != -1) //проверяем, что файл нам подходит { //---==сохраним данные по документам //путь к файлу Array.Resize(ref filePath, 1); filePath[0] = tmpFilePath; //Id файла Array.Resize(ref fileId, 1); fileId[0] = tmpFileId; //данные из файла Array.Resize(ref fileData, 1); fileData[0] = tmpFileData; } } }