Не верно сохраняется имя таблицы

artsmm

Client
Регистрация
03.10.2018
Сообщения
1 110
Благодарностей
195
Баллы
63
Всем привет
Не могу понять почему у меня не верно сохраняется название таблицы
Основной код, который отвечает за проверку файлов:
C#:
Random rnd = new Random();
            
            project.Variables["FileName"].Value = DateTime.Now.ToString("ddMMyyyy");
            project.SendInfoToLog("Имя файла - " + project.Variables["FileName"].Value,true);
            int DaysDel = Convert.ToInt32(project.Variables["TimeDelete"].Value);
            int ReportsClean = Convert.ToInt32(project.Variables["ReportsClean"].Value);
            
            string sity_name = project.Variables["sity_name"].Value;
            string cat_name = project.Variables["cat_name"].Value;
            string AccLogin = project.Variables["AccLogin"].Value;
            
            Directory.CreateDirectory(project.Directory + @"\System" + @"\" + project.Variables["AccLogin"].Value + @"\" + sity_name);
            Directory.CreateDirectory(project.Directory + @"\Reports" + @"\" + project.Variables["AccLogin"].Value + @"\" + sity_name);
            
            System.Threading.Thread.Sleep(9000);
            
            if(File.Exists(project.Directory + @"\Reports" + @"\" + project.Variables["AccLogin"].Value + @"\" + sity_name + @"\" + cat_name + ".xlsx")){
                project.SendInfoToLog("Файл отчета уже существует, пишем в него данные",true);
            }else{
                project.SendWarningToLog("Файл отчета, в папке - " + "'" + sity_name + "'" + " с именем отчета - " + "'" + cat_name + "'" + " отсутствует в папке с Reports, создаем новый, пишем в него данные",true);             
                //Копируем blank в существующую директорию, если она еще не существует
                File.Copy(project.Directory + @"\Reports\blank.xlsx", project.Directory + @"\Reports" + @"\" + project.Variables["AccLogin"].Value + @"\" + sity_name + @"\" + cat_name + ".xlsx");
            }
            
            if(File.Exists(project.Directory + @"\System" + @"\" + project.Variables["AccLogin"].Value + @"\" + project.Variables["FileName"].Value + ".xlsx")){
                project.SendInfoToLog("Файл с именем - " + project.Variables["FileName"].Value + " уже существует",true);
            }else{
                File.Copy(project.Directory + @"\System\blank2.xlsx", project.Directory + @"\System" + @"\"+ project.Variables["AccLogin"].Value + @"\" + project.Variables["FileName"].Value + ".xlsx");
            }
            
            //Не удалять файлы вообще, стоит 0
            if(ReportsClean==0){
                project.SendInfoToLog("Файлы в папке System удаляться не будут, установлен 0", true);
            }else{         
                string[] FilesSystem = Directory.GetFiles(project.Directory + @"\System" + @"\" + project.Variables["AccLogin"].Value);
                foreach (string filesystem in FilesSystem){
                    FileInfo fisys = new FileInfo(filesystem);
                    if (fisys.CreationTime < DateTime.Now.AddDays(-DaysDel)){
                        project.SendWarningToLog("Файлы в папке System - устарели, удаляем все файлы, старше - " + DaysDel + " дней",true);
                        fisys.Delete();
                    }
                }               
            }
            
            if(DaysDel==0){
                project.SendInfoToLog("Файлы в папке Reports удаляться не будут, установлен 0", true);
            }else{
                string[] FilesReports = Directory.GetFiles(project.Directory + @"\Reports" + @"\" + project.Variables["AccLogin"].Value);
                foreach (string filereport in FilesReports){
                    FileInfo fireport = new FileInfo(filereport);
                    if (fireport.CreationTime < DateTime.Now.AddDays(-ReportsClean)){
                        project.SendWarningToLog("Файлы в папке Reports - устарели, удаляем все файлы, старше - " + ReportsClean + " дней",true);
                        fireport.Delete();
                    }
                }
            }
Может тут что-то не верно указал?

Путь к самой таблице указан так: {-Project.Directory-}System\{-Variable.AccLogin-}\{-Variable.FileName-}.xlsx

На момент когда нужно записывать данные в файл таблицы, файл с именем текущей даты уже создан, но при это данные пишутся в файл с таким названием ".xlsx" по этому пути {-Project.Directory-}System\ (тут этот файл создается), а должен записываться в файл, который создан по пути самой таблицы. Причем, файл в папке уже есть на момент записи данных
В чем вопрос может быть?

на epplus не хотелось бы переводить, уже почти весь шаблон дописал
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 804
Баллы
113
Я бы порекомендовал для начала все пути к файлам\папкам сохранить где-то в начале в переменные и в коде использовать уже эти переменные.

Вы сейчас в каждом месте формируете путь с нуля, что чревато ошибками, особенно когда Вы захотите что-то в пути поменять, можно случайно забыть в одном месте изменить и всё поломается. А так пути будут формироваться в одном месте и изменения надо будет провести только в одном месте.

файл с именем текущей даты уже создан, но при это данные пишутся в файл с таким названием ".xlsx" по этому пути {-Project.Directory-}System\ (тут этот файл создается), а должен записываться в файл, который создан по пути самой таблицы.
Значит, скорее всего, проблема в месте где проходит привязка файла к таблице.

P.S. Есть удобный метод для формирования путей - Path.Combine
 

artsmm

Client
Регистрация
03.10.2018
Сообщения
1 110
Благодарностей
195
Баллы
63
Я бы порекомендовал для начала все пути к файлам\папкам сохранить где-то в начале в переменные и в коде использовать уже эти переменные.

Вы сейчас в каждом месте формируете путь с нуля, что чревато ошибками, особенно когда Вы захотите что-то в пути поменять, можно случайно забыть в одном месте изменить и всё поломается. А так пути будут формироваться в одном месте и изменения надо будет провести только в одном месте.


Значит, скорее всего, проблема в месте где проходит привязка файла к таблице.

P.S. Есть удобный метод для формирования путей - Path.Combine
Спасибо. Попробую. В том то и дело, что все в одном месте формируется
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 804
Баллы
113
В том то и дело, что все в одном месте формируется
Я говорил об этом:
72125
Довольно сложно разобраться :-) И легко запутаться.

По теме: попробуйте в лог вывести переменную в которой хранится путь к таблице. Я подозреваю, что проблема где-то в формировании путей.
 

artsmm

Client
Регистрация
03.10.2018
Сообщения
1 110
Благодарностей
195
Баллы
63
Я говорил об этом:
Довольно сложно разобраться :-) И легко запутаться.

По теме: попробуйте в лог вывести переменную в которой хранится путь к таблице. Я подозреваю, что проблема где-то в формировании путей.
понял, спасибо за подсказку) а то моск сломал уже))
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 804
Баллы
113
  • Спасибо
Реакции: artsmm

artsmm

Client
Регистрация
03.10.2018
Сообщения
1 110
Благодарностей
195
Баллы
63
Кому интересно, в итоге так решил вопрос:
метод FileCheck:
C#:
Random rnd = new Random();
            
            project.Variables["FileName"].Value = DateTime.Now.ToString("ddMMyyyy");
            project.SendInfoToLog("Имя файла - " + project.Variables["FileName"].Value,true);
            int DaysDel = Convert.ToInt32(project.Variables["TimeDelete"].Value);
            int ReportsClean = Convert.ToInt32(project.Variables["ReportsClean"].Value);
            
            string sity_name = project.Variables["sity_name"].Value;
            string cat_name = project.Variables["cat_name"].Value;
            string AccLogin = project.Variables["AccLogin"].Value;
            
            string SystemPath = Path.Combine(project.Directory, "System", project.Variables["AccLogin"].Value, sity_name);
            string ReportsPath = Path.Combine(project.Directory, "Reports", project.Variables["AccLogin"].Value, sity_name);
            
            string ReportsPathCheck = Path.Combine(project.Directory, "Reports", project.Variables["AccLogin"].Value, sity_name, cat_name +  ".xlsx");
            string SystemPathCheck = Path.Combine(project.Directory, "System", project.Variables["AccLogin"].Value, project.Variables["FileName"].Value + ".xlsx");
            
            string FileSystemDelPath = Path.Combine(project.Directory, "System", project.Variables["AccLogin"].Value);
            string FileReportsDelPath = Path.Combine(project.Directory, "Reports", project.Variables["AccLogin"].Value);
            
            Directory.CreateDirectory(SystemPath);
            Directory.CreateDirectory(ReportsPath);
            
            System.Threading.Thread.Sleep(9000);
            
            if(File.Exists(ReportsPathCheck)){
                project.SendInfoToLog("Файл отчета уже существует, пишем в него данные",true);
            }else{
                project.SendWarningToLog("Файл отчета, в папке - " + "'" + sity_name + "'" + " с именем отчета - " + "'" + cat_name + "'" + " отсутствует в папке с Reports, создаем новый, пишем в него данные",true);               
                //Копируем blank в существующую директорию, если она еще не существует
                File.Copy(project.Directory + @"\Reports\blank.xlsx", ReportsPathCheck);
            }
            
            if(File.Exists(SystemPathCheck)){
                project.SendInfoToLog("Файл с именем - " + project.Variables["FileName"].Value + " уже существует",true);
            }else{
                File.Copy(project.Directory + @"\System\blank2.xlsx", SystemPathCheck);
            }
            
            //Не удалять файлы вообще, стоит 0
            if(ReportsClean==0){
                project.SendInfoToLog("Файлы в папке System удаляться не будут, установлен 0", true);
            }else{           
                string[] FilesSystem = Directory.GetFiles(FileSystemDelPath);
                foreach (string filesystem in FilesSystem){
                    FileInfo fisys = new FileInfo(filesystem);
                    if (fisys.CreationTime < DateTime.Now.AddDays(-DaysDel)){
                        project.SendWarningToLog("Файлы в папке System - устарели, удаляем все файлы, старше - " + DaysDel + " дней",true);
                        fisys.Delete();
                    }
                }               
            }
            
            if(DaysDel==0){
                project.SendInfoToLog("Файлы в папке Reports удаляться не будут, установлен 0", true);
            }else{
                string[] FilesReports = Directory.GetFiles(FileReportsDelPath);
                foreach (string filereport in FilesReports){
                    FileInfo fireport = new FileInfo(filereport);
                    if (fireport.CreationTime < DateTime.Now.AddDays(-ReportsClean)){
                        project.SendWarningToLog("Файлы в папке Reports - устарели, удаляем все файлы, старше - " + ReportsClean + " дней",true);
                        fireport.Delete();
                    }
                }
            }
В коде, перед работой с файлами сделал вставку:

C#:
string path = Path.Combine(project.Directory, "System", project.Variables["AccLogin"].Value, project.Variables["FileName"].Value + ".xlsx");
            
            project.SendInfoToLog("Путь для записи в таблицу - " + path);
            
            instance.WaitForUserAction(5);
            
            GoodsInCab.Bind(path);
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)