Создание постоянно нового эксель файла при парсинге

temass

Client
Регистрация
06.06.2015
Сообщения
98
Благодарностей
3
Баллы
8
Всем привет! Друзья, такая ситуация, собираю данные с сайта, мне нужно чтобы каждая итерация сбора сохранялась в новый файл эксель, подключил библиотеку EPPlus. Получаю данные в переменные и потом этим кодом записываю их


C#:
FileInfo file = new FileInfo("C:/Users/Administrator/Desktop/мои программы/postuplenie.ru/file.xlsx");//указываем путь к файлу

using (ExcelPackage package = new ExcelPackage(file)){
    ExcelWorksheet sheet = package.Workbook.Worksheets[1];
      
sheet.Cells[1, 2].Value = category;
sheet.Cells[3, 2].Value = name;
sheet.Cells[4, 2].Value = gorod;
sheet.Cells[5, 2].Value = adress;
sheet.Cells[6, 2].Value = site;
sheet.Cells[7, 2].Value = telefon;
sheet.Cells[8, 2].Value = kafedra;
sheet.Cells[9, 2].Value = obshaga;
sheet.Cells[10, 2].Value = priceobshagabudget;
sheet.Cells[11, 2].Value = priceobshagadogovor;
sheet.Cells[12, 2].Value = programm;
sheet.Cells[13, 2].Value = otsrocka;
sheet.Cells[14, 2].Value = countvypusknikov;
sheet.Cells[15, 2].Value = stipendia;
sheet.Cells[16, 2].Value = diplom;
sheet.Cells[17, 2].Value = univercount;
sheet.Cells[18, 2].Value = izvestnvypusk;
        package.Save();//сохраняем таблицу
Файл не появляется, в мейкере пишет: Получение списка локальных переменных Ссылка на объект не указывает на экземпляр объекта.
 

temass

Client
Регистрация
06.06.2015
Сообщения
98
Благодарностей
3
Баллы
8
не ругайте за названия переменных, стараюсь использовать английский, но иногда хочется быстрее)) учусь
 

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63
так отрабатывает?
C#:
string TableName = "test";

FileInfo fileres = new FileInfo (project.Directory + @"\\"+TableName+".xlsx");
if(!fileres.Exists)                       
{         
    fileres = new FileInfo (project.Directory + @"\\"+TableName+".xlsx");     
}
    using(ExcelPackage package = new ExcelPackage(fileres))                   
    {
        ExcelWorksheet ws = package.Workbook.Worksheets.Add("ListName");
        //слева номер ряда, справа номер столбца
        ws.Cells[1, 1].Value = "USER NAME";
        ws.Cells[1, 2].Value = "FULL NAME";
        ws.Cells[1, 3].Value = "IS PRIVATE";
        package.Save();
    }
 

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
К слову, если у тебя один лист в файле, можно работать без библиотеки. Просто уникальные имена делаешь. У меня все работает
 

temass

Client
Регистрация
06.06.2015
Сообщения
98
Благодарностей
3
Баллы
8
так отрабатывает?
C#:
string TableName = "test";

FileInfo fileres = new FileInfo (project.Directory + @"\\"+TableName+".xlsx");
if(!fileres.Exists)                      
{        
    fileres = new FileInfo (project.Directory + @"\\"+TableName+".xlsx");    
}
    using(ExcelPackage package = new ExcelPackage(fileres))                  
    {
        ExcelWorksheet ws = package.Workbook.Worksheets.Add("ListName");
        //слева номер ряда, справа номер столбца
        ws.Cells[1, 1].Value = "USER NAME";
        ws.Cells[1, 2].Value = "FULL NAME";
        ws.Cells[1, 3].Value = "IS PRIVATE";
        package.Save();
    }
Получение списка локальных переменных Ссылка на объект не указывает на экземпляр объекта.
тоже самое пишет((((
 

temass

Client
Регистрация
06.06.2015
Сообщения
98
Благодарностей
3
Баллы
8
К слову, если у тебя один лист в файле, можно работать без библиотеки. Просто уникальные имена делаешь. У меня все работает
у меня один лист, можешь показать образец, как это можно написать
 

temass

Client
Регистрация
06.06.2015
Сообщения
98
Благодарностей
3
Баллы
8
может какую еще библиотеку надо подключить...не знаю что и делать
 

temass

Client
Регистрация
06.06.2015
Сообщения
98
Благодарностей
3
Баллы
8
в проджект мейкере ошибка и ничего не происходит, в зенопостере написало это

Выполнение действия CSharp OwnCode. Путь содержит недопустимые знаки.
 

molotok

Client
Регистрация
17.04.2015
Сообщения
733
Благодарностей
358
Баллы
63
Для каждого нового файла нужно менять имя файла, и тогда результат будет записываться в новый файл, а не перезаписывать старый
 

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Никакую библиотеку не надо. Только нужно следить за разделителями, чтобы выгрузилось нормально.
C#:
var list = project.Lists["Имя_листа"]; //Пишешь правильное имя листа, соблюдая регистр
File.WriteAllLines(project.Directory+"\\"+"Result-"+Environment.TickCount+".csv",list);//Сохранится в .csv файл в директорию проекта
 

temass

Client
Регистрация
06.06.2015
Сообщения
98
Благодарностей
3
Баллы
8
Для каждого нового файла нужно менять имя файла, и тогда результат будет записываться в новый файл, а не перезаписывать старый
у меня даже первый файл не записывается, а так имя файла в переменной, которая всегда меняется
 

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43

temass

Client
Регистрация
06.06.2015
Сообщения
98
Благодарностей
3
Баллы
8
Ты попробовал кубик C# сделать ?
я в кубике c# и делаю...надо было как то по другому?? слушай если твой код использовать то мы разместим все данные по порядку в 1 столбец, а как то можно сделать чтобы я указывал в какие ячейки данные сохранять?
 

temass

Client
Регистрация
06.06.2015
Сообщения
98
Благодарностей
3
Баллы
8
самое смешное что на кубике это сделать совсем не проблема, а вот как в коде((((
 

molotok

Client
Регистрация
17.04.2015
Сообщения
733
Благодарностей
358
Баллы
63
у меня даже первый файл не записывается, а так имя файла в переменной, которая всегда меняется
Этот код должен работать.

C#:
FileInfo file = new FileInfo("C:/file.xlsx");//указываем путь к файлу

using (ExcelPackage package = new ExcelPackage(file)){
    ExcelWorksheet sheet = package.Workbook.Worksheets.Add("Лист 1");
      
    sheet.Cells[1, 2].Value = "категория";
    sheet.Cells[2, 2].Value = "Имя";
    sheet.Cells[3, 2].Value = "Город";
    package.Save();//сохраняем таблицу
}
 

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
я в кубике c# и делаю...надо было как то по другому?? слушай если твой код использовать то мы разместим все данные по порядку в 1 столбец, а как то можно сделать чтобы я указывал в какие ячейки данные сохранять?
Нужно разделитель учитывать, я же писал. Между твоими столбцами должен стоять по умолчанию знак ";".

Иначе пользуйся шаблоном молотка) должен работать.
 

temass

Client
Регистрация
06.06.2015
Сообщения
98
Благодарностей
3
Баллы
8
Друзья спасибо вам всем! Реально помогли! Скажите, а как мне сохранять файл в папку с тем же именем что и файл, пробую так
C#:
FileInfo file = new FileInfo (project.Directory + @"\\"+name+"\\"+name+".xlsx");
не работает(
 

temass

Client
Регистрация
06.06.2015
Сообщения
98
Благодарностей
3
Баллы
8
разобрался
 
Последнее редактирование:

temass

Client
Регистрация
06.06.2015
Сообщения
98
Благодарностей
3
Баллы
8
Всем привет! ребята спасибо большое! не знаю что случилось, но заработало само)) расскажите, как сохранять файл в папку с тем же именем что и файл

C#:
FileInfo file = new FileInfo (project.Directory + @"\\"+name+"\\"+name+".xlsx");
так не работает
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
расскажите, как сохранять файл в папку с тем же именем что и файл
Сначала надо проверять существует такая папка или нет, создать ее при необходимости, и потом уже работать с файлом в этой папке.
 

temass

Client
Регистрация
06.06.2015
Сообщения
98
Благодарностей
3
Баллы
8
Сначала надо проверять существует такая папка или нет, создать ее при необходимости, и потом уже работать с файлом в этой папке.
а можно образец кода, если есть под рукой у вас
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
  • Спасибо
Реакции: temass

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113
Достаточно такого:
C#:
Directory.CreateDirectory(project.Directory + @"\folder");
в проверке нет смысла, если подразумевается работа по конкретному пути.
 
  • Спасибо
Реакции: temass

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