Example #1
0
        /// <summary>
        /// Очень сложный метод т.к ObservableCollection нельзя обновить из другого потока потомучто он привязан к UI потоку.
        /// Поэтому пришлось создавать метод UpdateOn() который отвяжет его от потока UI
        /// После этого мы можем манипулировать ObservableCollection
        /// Такая функция появилась только в Net 4.5
        /// </summary>
        /// <param name="databasepath">Путь кбазе в Lotus</param>
        /// <param name="shemezg">Наша модель отражения элементов для манипуляции </param>
        /// <param name="formula">Заранее сгенерированая формула поиска ЗГ</param>
        public async void SeathZgOtdel(string databasepath, ModelZg shemezg, string formula, Loading Load)
        {
            try
            {
                shemezg.ShemeDbZg.Clear();
                shemezg.UpdateOn();
                await Task.Run(() =>
                {
                    var db         = ConectDb.ConectDb.Databaseconect(ConectionString.ConectionString.Pass, ConectionString.ConectionString.ServerLocal, databasepath, false);
                    Load.Text      = "Приступили к поиску ждите";
                    var col        = db.Search(formula, null, 0);
                    var count      = col.Count;
                    var docum      = col.GetFirstDocument();
                    var i          = 1;
                    var workbook1  = new XLWorkbook();
                    var worksheet1 = workbook1.Worksheets.Add("Отчет Lotus");
                    while (docum != null)
                    {
                        Load.Text            = "Обработано " + i + " из " + count;
                        var NamePerson       = docum.GetItemValue(LotusItem.DbZgItem.NamePerson)[0].ToString();
                        var NumZg            = docum.GetItemValue(LotusItem.DbZgItem.NumZg)[0].ToString();
                        var StatusZg         = docum.GetItemValue(LotusItem.DbZgItem.StatusZg)[0].ToString();
                        var DataregZg        = docum.GetItemValue(LotusItem.DbZgItem.DataregZg)[0].ToString();
                        var InCardRespOutNum = docum.GetItemValue(LotusItem.DbZgItem.InCardRespOutNum)[0].ToString();
                        var IoInn            = docum.GetItemValue(LotusItem.DbZgItem.IoInn)[0].ToString();
                        var DepartamentZg    = docum.GetItemValue(LotusItem.DbZgItem.DepartamentZg)[0].ToString();
                        var Incardrespoutnum = docum.GetItemValue(LotusItem.DbZgItem.InCardRespOutNum)[0].ToString();
                        var Incardrespdi     = docum.GetItemValue(LotusItem.DbZgItem.InCardRespDi)[0].ToString();
                        var Extofiledate     = docum.GetItemValue(LotusItem.DbZgItem.ExToFileDate)[0].ToString();

                        worksheet1.Cell($"A{i}").Value = NamePerson;
                        worksheet1.Cell($"B{i}").Value = NumZg;
                        worksheet1.Cell($"C{i}").Value = StatusZg;
                        worksheet1.Cell($"D{i}").Value = DataregZg;
                        worksheet1.Cell($"E{i}").Value = InCardRespOutNum;
                        worksheet1.Cell($"F{i}").Value = IoInn;
                        lock (shemezg._lock)
                        {
                            shemezg.ShemeDbZg.Add(new ModelZg()
                            {
                                Incardrespoutnum = Incardrespoutnum,
                                DepartamentZg    = DepartamentZg,
                                StatusZg         = StatusZg,
                                DataregZg        = DataregZg,
                                NumZg            = NumZg,
                                Namefio          = NamePerson,
                                Incardrespdi     = Incardrespdi,
                                Extofiledate     = Extofiledate
                            });
                        }
                        i++;
                        docum = col.GetNextDocument(docum);
                    }
                    workbook1.SaveAs("D:\\Отчет.xlsx");
                    shemezg.UpdateOff();
                });
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
        }
Example #2
0
        /// <summary>
        /// Очень сложный метод т.к ObservableCollection нельзя обновить из другого потока потомучто он привязан к UI потоку.
        /// Поэтому пришлось создавать метод UpdateOn() который отвяжет его от потока UI
        /// После этого мы можем манипулировать ObservableCollection
        /// Такая функция появилась только в Net 4.5
        /// </summary>
        /// <param name="databasepath">Путь кбазе в Lotus</param>
        /// <param name="shemezg">Наша модель отражения элементов для манипуляции </param>
        /// <param name="formula">Заранее сгенерированая формула поиска ЗГ</param>
        public void SeathZgOtdel(string databasepath, ModelZg shemezg, string formula, Loading Load)
        {
            try
            {
                shemezg.ShemeDbZg.Clear();
                shemezg.UpdateOn();
                Task.Run(() =>
                {
                    //var db = ConectDb.ConectDb.Databaseconect(ConectionString.ConectionString.Pass,
                    //ConectionString.ConectionString.ServerLocal, databasepath, false);
                    var db = ConectDb.ConectDb.Databaseconect(ConectionString.ConectionString.Pass,
                                                              ConectionString.ConectionString.ServerLocal, "IFNS\\Комутатор_архивов\\Arhiv2018\\2017\\ZG_Arhiv_2017.nsf", false);

                    // var col = db.Search(formula, null, 0);
                    var col        = db.Search("Select @All", null, 0);
                    var count      = col.Count;
                    var docum      = col.GetFirstDocument();
                    var i          = 1;
                    var workbook1  = new XLWorkbook();
                    var worksheet1 = workbook1.Worksheets.Add("Отчет Lotus");
                    while (docum != null)
                    {
                        Load.Text = "Обработано " + i + " из " + count;
                        //var docum1 = docum;
                        //Task.Run(async () =>
                        //{
                        //    await Task.Run(() =>
                        //    {
                        var a  = docum.GetItemValue(LotusItem.DbZgItem.NamePerson)[0].ToString();
                        var a1 = docum.GetItemValue(LotusItem.DbZgItem.NumZg)[0].ToString();
                        var a2 = docum.GetItemValue(LotusItem.DbZgItem.StatusZg)[0].ToString();
                        var a3 = docum.GetItemValue(LotusItem.DbZgItem.DataregZg)[0].ToString();
                        var a4 = docum.GetItemValue(LotusItem.DbZgItem.InCardRespOutNum)[0].ToString();
                        var a5 = docum.GetItemValue(LotusItem.DbZgItem.IoInn)[0].ToString();
                        worksheet1.Cell($"A{i}").Value = a;
                        worksheet1.Cell($"B{i}").Value = a1;
                        worksheet1.Cell($"C{i}").Value = a2;
                        worksheet1.Cell($"D{i}").Value = a3;
                        worksheet1.Cell($"E{i}").Value = a4;
                        worksheet1.Cell($"F{i}").Value = a5;
                        i++;
                        //lock (shemezg._lock)
                        //shemezg.ShemeDbZg.Add(new ModelZg
                        //{
                        //    StatusZg = docum1.GetItemValue(LotusItem.DbZgItem.StatusZg)[0],
                        //    Num = docum1.GetItemValue(LotusItem.DbZgItem.NumZg)[0],
                        //    Datareg = docum1.GetItemValue(LotusItem.DbZgItem.DataregZg)[0],
                        //    DepartamentZg = docum1.GetItemValue(LotusItem.DbZgItem.DepartamentZg)[0],
                        //    Incardrespoutnum = docum1.GetItemValue(LotusItem.DbZgItem.InCardRespOutNum)[0],
                        //    Incardrespdi =Convert.ToString(docum1.GetItemValue(LotusItem.DbZgItem.InCardRespDi)[0]),
                        //    Extofiledate =Convert.ToString(docum1.GetItemValue(LotusItem.DbZgItem.ExToFileDate)[0]),
                        //    NameFio = docum1.GetItemValue(LotusItem.DbZgItem.NamePerson)[0]
                        //});
                        //    });
                        //});
                        docum = col.GetNextDocument(docum);
                    }
                    workbook1.SaveAs("C:\\Отчет.xlsx");
                    // ExportToExcel(shemezg);
                    shemezg.UpdateOff();
                });
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
        }