jinesh sam Ответов: 1

Что является лучшим способом, чтобы обновить файл Excel, используя файл сопоставления


Привет Друзья,

Мне нужно обновить существующий файл excel, пока я гуглил, я нашел в основном три метода: OLEDB, Interop и openXML. Поэтому я не знаю, какой из них будет лучше и эффективнее.
Мое требование заключается в том, что мне нужно открыть файл excel, внести необходимые изменения и сохранить его в другом месте. Для обновления excel у меня есть файл mapper. мне нужно прочитать файл картографа и обновить ячейки. Мой файл excel содержит около 15 листов, и каждый из них содержит около 30 строк и 10 столбцов.
Моя файловая структура Mapper такова

Пункт, Листа, Ячейка
Сумма, лист1, В2
Налог, лист2, D10

Пожалуйста, направьте меня, чтобы достичь этого.

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

public static void excelsave()
       {
           Excel.Application oExcel = new Excel.Application();
           try
           {
               string excelorignalpath = @"C:\Users\Hp\Desktop\exceltest.xlsx";
               string excelbackuppath = @"C:\Users\Hp\Desktop\Backup\exceltest.xlsx";

               Excel.Workbook book = oExcel.Workbooks.Open(excelorignalpath);
               Excel.Worksheet sheet = (Excel.Worksheet)book.Sheets[1];
               Excel.Range excelRange = sheet.UsedRange;
               object[,] valueArray = (object[,])excelRange.get_Value(Excel.XlRangeValueDataType.xlRangeValueDefault);
               valueArray[2, 2] = 12345678;
               excelRange.Value = valueArray;
               book.SaveAs(excelbackuppath);
               book.Close();
               Marshal.ReleaseComObject(sheet);
               Marshal.ReleaseComObject(book);
           }
           catch (Exception ex)
           {

           }
           finally
           {
               Marshal.ReleaseComObject(oExcel);
               GC.Collect();
               GC.WaitForPendingFinalizers();
           }

       }

1 Ответов

Рейтинг:
1

Patrice T

Это выглядит довольно сложно:

Excel.Range excelRange = sheet.UsedRange;
object[,] valueArray = (object[,])excelRange.get_Value(Excel.XlRangeValueDataType.xlRangeValueDefault);
valueArray[2, 2] = 12345678;
excelRange.Value = valueArray;

попробуйте вместо этого:
Cells(2, 2).Value = 12345678;


jinesh sam

Превосходить.Ячейки (2,2) не являются допустимым утверждением. его метания ошибка. пожалуйста помочь

Patrice T

Ой, теперь должно быть лучше.

jinesh sam

Спасибо, лист.Ячейки[2, 2] работают :) мой вопрос был в том, какой из них является лучшим способом обновления excel. Есть какие-нибудь предложения по этому поводу?

Patrice T

То, как я обновляю ячейку, лучше, чем у вас.

jinesh sam

На 100% я согласен..Я соответствующим образом изменил свой код. Спасибо :)