Example #1
0
        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);
        }
Example #2
0
        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документов, содержащих градуировочные таблицы не обнаружено"));
                    }
                }
            }
        }
Example #3
0
        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;
                }
            }
        }