ShivAkshay Ответов: 1

Экспорт данных в предопределенный шаблон excel.


Я создал одно приложение. Я могу экспортировать данные в Excel с помощью Excel Interop. Позже я делаю вычисления вручную. Здесь я хочу использовать Excel, который уже написал формулы в Sheet1 & данные, которые я экспортирую из своего приложения, должны загружаться в Sheet2. После полной загрузки данных результат должен отображаться на листе 1. ПЛ, помогите по этой просьбе.
Ниже приведен код, который я могу экспортировать данные в новый excel.

Что я уже пробовал:

public void ExportToExcel(ListView lsvData, string sSheeyName)
        {
            Microsoft.Office.Interop.Excel.Application xla = new Microsoft.Office.Interop.Excel.Application();
            xla.Visible = true;
            Microsoft.Office.Interop.Excel.Workbook wb = xla.Workbooks.Add(Microsoft.Office.Interop.Excel.XlSheetType.xlWorksheet);
            Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)xla.ActiveSheet;
            int i = 4;
            int j = 1;
            int c = 1;
            int r = 5;
            int ilsvCol = 0;
            string sFcol;
            ws.Name = sSheeyName;

            ws.Cells[c, r] = ws.Name;
            ws.Cells[c, r].Font.Bold = true;
            ws.Cells[c, r].Font.Size = 20;

            foreach (ColumnHeader lsvcolumn in lsvData.Columns)
            {              
                if (lsvcolumn.Width > 0)
                {                   
                    ws.Cells[i, j] = lsvcolumn.Text;
                    ws.Cells[i, j].Font.Bold = true;
                    ws.Cells[i, j].Interior.Color = Color.GreenYellow;
                    ws.Columns[j].ColumnWidth = lsvcolumn.Text.Length + 10;

                    j++;
                }
            }
            if (j > 52)
            {
                sFcol = "B" + Convert.ToChar(64 + j - 52).ToString();
            }
            else if (j > 26)
            {
                sFcol = "A" + Convert.ToChar(64 + j - 26).ToString();
            }
            else
            {
                sFcol = Convert.ToChar(64 + j).ToString();
            }

            i = 5;
            j = 1;
            foreach (ListViewItem comp in lsvData.Items)
            {
                ilsvCol = 0;
                foreach (ListViewItem.ListViewSubItem drv in comp.SubItems)
                {
                   // if (lsvData.Columns[ilsvCol].Width > 0)
                    if (lsvData.Columns[ilsvCol].Width > 0)

                        {
                        // ws.Cells[i, j] = "'" + drv.Text.ToString();
                        ws.Cells[i, j] =  drv.Text.ToString();
                        ws.Cells[i, j].Style.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
                        j++;
                    }
                    ilsvCol++;
                }
                j = 1;
                i++;
            }

        }

    }

Patrice T

В чем проблема с вашим кодом ?

ShivAkshay

Пл. Смотрите мои недавно добавленные комментарии.

harish85

пожалуйста, четко объясните свою проблему

ShivAkshay

Пл. См. мой комментарий, добавленный Нили.

ShivAkshay

Привет harish85 & ppolymorphe. мой вопрос предельно ясен. С помощью прилагаемого кода я могу экспортировать полученные данные в один новый лист excel. Нет никакой проблемы в этом коде. После экспорта я хочу потратить дополнительное время на некоторые вычисления с экспортными данными. Вместо этого я создам один excel с определенными формулами в sheet1 и сохраню его в назначенной папке. Позже я хочу экспортировать данные из моего приложения C# непосредственно в этот же лист excel sheet2. Без отправки какого-либо дополнительного времени результат должен автоматически отображаться в листе 1. Я верю, что теперь вы можете понять мой вопрос.

1 Ответов

Рейтинг:
2

Alex Banu

вы можете попробовать это библиотека closedxml.
я использовал его для какого-то проекта и прекрасно работал.