49 / 31 / 2
Регистрация: 14.02.2013
Сообщений: 677

Как редактировать книгу Excel без её открытия в Excel?

16.12.2017, 16:36. Показов 2811. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я реализовал на VBA процедуру пакетного редактирования всех книг в папке, и подготовки сводной таблицы по данным в этих книгах. Всё отлично, рутина, занимавшая от полу-часа до часа ежедневно свелась до 1 -2 минут. Но есть нюанс, который мне не нравится в том, как работает процедура - она открывает книги. В работе это выглядит очень не привлекательно, пугает пользователя, занимает много времени (при количестве книг более 30). И тут не спасает даже Application.ScreenUpdating = False потому, что всё равно всё мигает, видно, что окна открываются.
Я надеялся, что применив C# можно будет работать с книгами без их открытия в Excel.

Вот здесь приводится пример заполнения листа таблицы средствами C#, и как видно, в примере книга открывается перед редактированием.

Это что получается, что без открытия документа в Excel его невозможно отредактировать?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.12.2017, 16:36
Ответы с готовыми решениями:

Скопировать диапазон ячеек одной книги Excel в другую книгу Excel
Из темы все ясно... Не могу разобраться никак. Можно ли открыть одну книгу, скопировать диапазон куда-нибудь, потом открыть другую книгу......

Скопировать один лист из одной книги excel в другую книгу excel
Мне нужно скопировать 1 лист из одной книги excel в другую книгу excel. Именно лист, а не диапазон ячеек. Диапазон ячеек я нашёл тут...

Работа с документами Excel без Microsoft.Office.Interop.Excel
всем добрый день все дело в том что для своих программ я использую БД Excel но! однако не все устанавливают на компьютере Office, да и...

5
 Аватар для m0nax
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
16.12.2017, 16:52
статья эта устарела лет на 8 где-то
через нормальные библиотеки вроде EPPlus можно вообще без установленного ехеля всё делать
0
49 / 31 / 2
Регистрация: 14.02.2013
Сообщений: 677
17.12.2017, 17:35  [ТС]
m0nax, благодарю, подключил, разбираюсь.
И сразу вопрос, в обзоре приведён фрагмент кода:
C#
1
2
3
4
5
6
7
8
9
using(var package = new ExcelPackage(new FileInfo(@"c:\temp\tmp.xlsx")))
{
   // calculate all formulas in the workbook
   package.Workbook.Calculate();
   // calculate one worksheet
   package.Workbook.Worksheets["my sheet"].Calculate();
  // calculate a range
  package.Workbook.Worksheets["my sheet"].Cells["A1"].Calculate();
}
Я этот фрагмент попробовал применить, и мне VS сообщает, что не обнаружены объекты ExcelPackage и FileInfo.
Они не реализованы в библиотеке, или я не так что-то делаю?

Добавлено через 23 часа 7 минут
С FileInfo разобрался - пространство имён System.IO
А вот ExcelPackage не найду, какое пространство указывать?
0
Warrior
 Аватар для _exp10der_
500 / 427 / 177
Регистрация: 23.11.2014
Сообщений: 932
17.12.2017, 17:45
Лучший ответ Сообщение было отмечено SrgKord как решение

Решение

Вот пример когда то давно делал Требуется консультация по экспорту данных

ExcelPackage находиться в namespace OfficeOpenXml https://github.com/JanKallman/... age.cs#L52
1
49 / 31 / 2
Регистрация: 14.02.2013
Сообщений: 677
19.12.2017, 18:56  [ТС]
_exp10der_, я на гитхабе только зарегался, не ориентируюсь, не мог найти описание библиотеки. Спасибо, что навели на путь джедая =)
Я когда-то делал ресурс с библиотекой PHPExcel, вот там была доступная инструкция, на английском правда, надо было только её изучить как следует.

Добавлено через 8 минут
_exp10der_, я до недавнего времени работал исключительно с VBA, и то, не более полу года всего, но уже несколько интересных идей на работе реализовал. Решил вот приступить к более серьёзному языку, но тут всё, конечно, сложнее гораздо. Я и литературу читаю, и на смарте прохожу обучалку в Sololearn, но вот как практика, так у меня затык.
Объясните, если вам не трудно, здесь, в вашем примере, директива using:
C#
1
 using (var package = new ExcelPackage())
играет роль на подобии того, что With в VBA? Т.е. как бы говорит: выполнять только в рамках этой директивы и с указанными параметрами

Добавлено через 3 минуты
В смысле, меня смущает сам факт её применения не в шапке, и как мне кажется, без видимой необходимости, ведь можно же вот так написать:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private static void Main()
        {
                InitializeDb();
                var package = new ExcelPackage();
                var worksheet = package.Workbook.Worksheets.Add("Users");
 
                var users = GetUsers();
 
                var range = new ExcelAddressBase(1, 1, users.Count + 1, 4);
 
                var table = worksheet.Tables.Add(range, "UsersTable");
                table.Columns[0].Name = "Id";
                table.Columns[1].Name = "Name";
                table.Columns[2].Name = "Email";
                table.Columns[3].Name = "Password";
 
                worksheet.Cells["A2"].LoadFromCollection(users);
                worksheet.Cells.AutoFitColumns();
 
                package.SaveAs(new FileInfo("test.xlsx"));
        }
0
Warrior
 Аватар для _exp10der_
500 / 427 / 177
Регистрация: 23.11.2014
Сообщений: 932
19.12.2017, 21:31
SrgKord, Да но мы же не закроем пакет этот
https://github.com/JanKallman/... ge.cs#L787

using нужен для Dispose

это просто разворачивается в конструкцию try/finally
https://docs.microsoft.com/en-... -statement
C#
1
2
3
4
5
6
7
8
9
10
11
{
  try
  {
    ...
  }
  finally
  {
    if (package != null)
      ((IDisposable)package).Dispose();
  }
}
Да и там же примеров тьма можете посмотреть например этот https://github.com/JanKallman/... le1.cs#L56
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.12.2017, 21:31
Помогаю со студенческими работами здесь

Ошибка открытия, обновления и сохранения Excel в фоне
Нужно открывать excel в фоне, обновлять все связи (они к вьюшкам sql, не быстро), сохранять, и закрывать Скриптов в инете много, взял за...

Excel, ссылка на открытую книгу
Добрый день. Имеется файл Excel, он уже открыт. Как получить на него ссылку, чтобы я мог работать с его листами и ячейками? Во всех...

Как считать данные из Excel используя ClosedXML.Excel?
Может кто помочь разобраться, как считать данные из таблицы Excel используя ClosedXML.Excel. Например есть таблица в Excel и из нее нужно...

Как работать с объектами Excel без визуального отображения?
На самом деле хотелось бы найти информацию как в памяти создавать рабочую книгу добавлять в нее листы и вписывать в ячейки этих листов...

Как пользуясь ADO извлечь строки c задаными критериями из одной книги Excel и поместить в другую книгу Excel?
Доброго времени суток, форумчане! Кто знает, подскажите пожалуйста, как с помощью ADO открыть соединение с другой книгой excel (с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
Создание нейросети с PyTorch
AI_Generated 19.06.2025
Ключевое преимущество PyTorch — его питоновская натура. В отличие от TensorFlow, который изначально был построен как статический вычислительный граф, PyTorch предлагает динамический подход. Это. . .
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C# Задание 1: КЛАСС FORM 1 public partial class Form1 : Form { Spisok listin = new Spisok(); . . .
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru