EPPluse не записывает значение

Azakim

Client
Регистрация
25.07.2021
Сообщения
165
Благодарностей
30
Баллы
28
C#:
        var package = new OfficeOpenXml.ExcelPackage();
        var exc = package.Workbook.Worksheets.Add("1");
        var path = new FileInfo(project.Directory + @"\" + "common_table_for_articel.xlsx");
        package.SaveAs(path);
        var package1 = new OfficeOpenXml.ExcelPackage(path);
        var excel = package1.Workbook.Worksheets[1];
        
        for(int i = 1;i < list_tables.Count;i++)
        {
            if(i <= 1)excel.SetValue(i,1,"Артикула");
            else
            {
                string for_write = list_tables.ElementAtOrDefault(i);
                excel.SetValue(i,1,for_write);
            }
        }
        
        package1.Save();
Пытаюсь вписать значения в созданную таблицу . Сам лист list_tables не пустой состоит из строк
100698

.Но вписывается все кроме значений из листа list_tables .Первая строка например вписалась в файл
100699

Помогите пожалуйста понять в какую сторону думать)
 

Вложения

ValMax

Client
Регистрация
01.12.2018
Сообщения
31
Благодарностей
8
Баллы
8
попробуй в эту сторону подумать, может поможет
C#:
lock (SyncObjects.TableSyncer)
    {   
    FileInfo template = new FileInfo(project.Directory + @"\common_table_for_articel.xlsx");
    using (ExcelPackage exPack = new ExcelPackage(template, true))
        {           
        ExcelWorksheet list = exPack.Workbook.Worksheets["1"];
        for(int i = 1; i < list_tables.Count; i++)
                {
                if(i <= 1)
                    list.Cells[i, 1].Value = "Артикула";
                else
                    {
                    string for_write = list_tables.ElementAtOrDefault(i);
                    list.Cells[i, 1].Value = for_write;
                    }
                }
        Byte[] bin = exPack.GetAsByteArray();
        string resPath = project.Directory + @"\common_table_for_articel.xlsx";
        File.WriteAllBytes(resPath, bin);
        }   
    }
 
  • Спасибо
Реакции: Sho и Azakim

djaga

Client
Регистрация
26.04.2020
Сообщения
505
Благодарностей
1 054
Баллы
93
C#:
        var package = new OfficeOpenXml.ExcelPackage();
        var exc = package.Workbook.Worksheets.Add("1");
        var path = new FileInfo(project.Directory + @"\" + "common_table_for_articel.xlsx");
        package.SaveAs(path);
        var package1 = new OfficeOpenXml.ExcelPackage(path);
        var excel = package1.Workbook.Worksheets[1];
     
        for(int i = 1;i < list_tables.Count;i++)
        {
            if(i <= 1)excel.SetValue(i,1,"Артикула");
            else
            {
                string for_write = list_tables.ElementAtOrDefault(i);
                excel.SetValue(i,1,for_write);
            }
        }
     
        package1.Save();
Пытаюсь вписать значения в созданную таблицу . Сам лист list_tables не пустой состоит из строк
Посмотреть вложение 100698
.Но вписывается все кроме значений из листа list_tables .Первая строка например вписалась в файл
Посмотреть вложение 100699
Помогите пожалуйста понять в какую сторону думать)
Основываясь на вашем примере, так работает:

Добавить данные из списка в ячейки одного столбца:
var package = new ExcelPackage();
var exc = package.Workbook.Worksheets.Add("1");
exc.Cells[1, 1].Value = "Артикул";
var path = new FileInfo(project.Directory + @"\" + "common_table_for_articel.xlsx");
package.SaveAs(path);
package.Dispose();

var package1 = new ExcelPackage(path);
var excel = package1.Workbook.Worksheets[1];

var listTables = new List<string> {"16:23", "16:24", "16:25", "16:26", "16:27"};

var countRow = 2;
for (var i = 0; i < listTables.Count; i++)
{
    var forWrite = listTables.ElementAtOrDefault(i);
    excel.SetValue(countRow++, 1, forWrite);
}

package1.Save();
package.Dispose();
upd: правки и добавил более понятный способ записи в ячейки
 

Вложения

Последнее редактирование:

Azakim

Client
Регистрация
25.07.2021
Сообщения
165
Благодарностей
30
Баллы
28
попробуй в эту сторону подумать, может поможет
C#:
lock (SyncObjects.TableSyncer)
    {  
    FileInfo template = new FileInfo(project.Directory + @"\common_table_for_articel.xlsx");
    using (ExcelPackage exPack = new ExcelPackage(template, true))
        {          
        ExcelWorksheet list = exPack.Workbook.Worksheets["1"];
        for(int i = 1; i < list_tables.Count; i++)
                {
                if(i <= 1)
                    list.Cells[i, 1].Value = "Артикула";
                else
                    {
                    string for_write = list_tables.ElementAtOrDefault(i);
                    list.Cells[i, 1].Value = for_write;
                    }
                }
        Byte[] bin = exPack.GetAsByteArray();
        string resPath = project.Directory + @"\common_table_for_articel.xlsx";
        File.WriteAllBytes(resPath, bin);
        }  
    }
Спасибо за ответ но все по прежнему ,значения на месте в лог выводятся перед записью ,но в файл только 1 клетка записывается ("Артикула") , сами значения как будь-то невидимые. При чем любое другое значение записывает без проблем например итерации )
 

Azakim

Client
Регистрация
25.07.2021
Сообщения
165
Благодарностей
30
Баллы
28
попробуй в эту сторону подумать, может поможет
C#:
lock (SyncObjects.TableSyncer)
    {  
    FileInfo template = new FileInfo(project.Directory + @"\common_table_for_articel.xlsx");
    using (ExcelPackage exPack = new ExcelPackage(template, true))
        {          
        ExcelWorksheet list = exPack.Workbook.Worksheets["1"];
        for(int i = 1; i < list_tables.Count; i++)
                {
                if(i <= 1)
                    list.Cells[i, 1].Value = "Артикула";
                else
                    {
                    string for_write = list_tables.ElementAtOrDefault(i);
                    list.Cells[i, 1].Value = for_write;
                    }
                }
        Byte[] bin = exPack.GetAsByteArray();
        string resPath = project.Directory + @"\common_table_for_articel.xlsx";
        File.WriteAllBytes(resPath, bin);
        }  
    }
Спасибо за ответ ,но все так же. При чем любое другое значение записывает без проблем например итерации )
 

Azakim

Client
Регистрация
25.07.2021
Сообщения
165
Благодарностей
30
Баллы
28
Спасибо всем кто отписался выше ,проблема решена и стыдно признавать ,но она была в моей невнимательности (facepalm)
 
  • Спасибо
Реакции: djaga

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