Exemplo n.º 1
0
        public static int CorrectColumnRecords(Database dataBase, int sheetIndex, int Column, CheckedListBox.CheckedItemCollection Parameters, bool ReplaceAlsoInSourceFile)
        {
            int          Proceed      = 0;
            HSSFWorkbook WorkbookXLS  = new HSSFWorkbook();
            XSSFWorkbook WorkbookXLSX = new XSSFWorkbook();
            ISheet       currentSheet = null;
            FileStream   fs           = null;

            if (!FileIsAvailable(dataBase.pathOfDatabase))
            {
                if (MessageBox.Show("Файл открыт в другой программе.\nПродолжить процесс корректировки в загруженном в программу экземпляре?", "Корректировать в программе без сохранения в файле?", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                {
                    return(0);
                }
                ReplaceAlsoInSourceFile = false;
            }
            if (ReplaceAlsoInSourceFile)
            {
                using (fs = new FileStream(dataBase.pathOfDatabase, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
                    switch (dataBase.TypeOfDB)
                    {
                    case Database.DBmode.XLS:
                        WorkbookXLS  = new HSSFWorkbook(fs);
                        currentSheet = WorkbookXLS.GetSheetAt(sheetIndex);
                        break;

                    case Database.DBmode.XLSX:
                        WorkbookXLSX = new XSSFWorkbook(fs);
                        currentSheet = WorkbookXLSX.GetSheetAt(sheetIndex);
                        break;
                    }
            }
            for (int row = 0; row < dataBase.listOfTables.Tables[sheetIndex].Rows.Count; row++)
            {
                string text = dataBase.listOfTables.Tables[sheetIndex].Rows[row][Column].ToString();
                if (Parameters.Contains("Убрать пробелы с концов строки"))
                {
                    text = text.Trim();
                }
                if (Parameters.Contains("Удалить пробелы из строки"))
                {
                    text = text.Replace(" ", "");
                }
                if (Parameters.Contains("Сменить регистр записей на верхний"))
                {
                    text = text.ToUpper();
                }
                if (Parameters.Contains("Сменить регистр записей на нижний"))
                {
                    text = text.ToLower();
                }
                dataBase.listOfTables.Tables[sheetIndex].Rows[row][Column] = text;
                if (ReplaceAlsoInSourceFile)
                {
                    currentSheet.GetRow(row + 1).GetCell(Column).SetCellValue(text);
                }
                Proceed++;
                Application.DoEvents();
            }
            dataBase.listOfTables.AcceptChanges();
            if (ReplaceAlsoInSourceFile)
            {
                using (fs = new FileStream(dataBase.pathOfDatabase, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
                    switch (dataBase.TypeOfDB)
                    {
                    case Database.DBmode.XLS:
                        WorkbookXLS.Write(fs);
                        break;

                    case Database.DBmode.XLSX:
                        WorkbookXLSX.Write(fs);
                        break;
                    }
                fs.Close();
                WorkbookXLS  = null;
                WorkbookXLSX = null;
                currentSheet = null;
            }
            return(Proceed);
        }
Exemplo n.º 2
0
        public static int ReplaceInDataTable(Database dataBase, int sheetIndex, int Column, CheckedListBox.CheckedItemCollection InElements, string OutElement, bool ReplaceAlsoInSourceFile)
        {
            int           Proceed     = 0;
            List <string> elementList = InElements.Cast <string>().ToList <string>();

            if (OutElement == "<пустое значение>")
            {
                OutElement = String.Empty;
            }
            if (elementList.Contains("<пустое значение>"))
            {
                elementList[elementList.IndexOf("<пустое значение>")] = String.Empty;
            }
            HSSFWorkbook WorkbookXLS  = new HSSFWorkbook();
            XSSFWorkbook WorkbookXLSX = new XSSFWorkbook();
            ISheet       currentSheet = null;
            FileStream   fs           = null;

            if (ReplaceAlsoInSourceFile && !FileIsAvailable(dataBase.pathOfDatabase))
            {
                if (MessageBox.Show("Файл открыт в другой программе.\nПродолжить процесс замены в загруженном в программу экземпляре?", "Заменить в программе без сохранения в файле?", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                {
                    return(0);
                }
                ReplaceAlsoInSourceFile = false;
            }
            if (ReplaceAlsoInSourceFile)
            {
                using (fs = new FileStream(dataBase.pathOfDatabase, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
                    switch (dataBase.TypeOfDB)
                    {
                    case Database.DBmode.XLS:
                        WorkbookXLS  = new HSSFWorkbook(fs);
                        currentSheet = WorkbookXLS.GetSheetAt(sheetIndex);
                        break;

                    case Database.DBmode.XLSX:
                        WorkbookXLSX = new XSSFWorkbook(fs);
                        currentSheet = WorkbookXLSX.GetSheetAt(sheetIndex);
                        break;
                    }
            }
            for (int row = 0; row < dataBase.listOfTables.Tables[sheetIndex].Rows.Count; row++)
            {
                if (elementList.Contains(dataBase.listOfTables.Tables[sheetIndex].Rows[row][Column].ToString()))
                {
                    dataBase.listOfTables.Tables[sheetIndex].Rows[row][Column] = OutElement;
                    if (ReplaceAlsoInSourceFile)
                    {
                        currentSheet.GetRow(row + 1).GetCell(Column).SetCellValue(OutElement);
                    }
                    Proceed++;
                }
                Application.DoEvents();
            }
            dataBase.listOfTables.AcceptChanges();
            if (ReplaceAlsoInSourceFile)
            {
                using (fs = new FileStream(dataBase.pathOfDatabase, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
                    switch (dataBase.TypeOfDB)
                    {
                    case Database.DBmode.XLS:
                        WorkbookXLS.Write(fs);
                        break;

                    case Database.DBmode.XLSX:
                        WorkbookXLSX.Write(fs);
                        break;
                    }
                fs.Close();
                WorkbookXLS  = null;
                WorkbookXLSX = null;
                currentSheet = null;
            }
            return(Proceed);
        }