Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685

WPF + Excel данные - IXLWorksheet использование в операторе using

28.01.2019, 22:25. Показов 2297. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток коллеги, подскажите как решить проблему : IXLWorksheet: тип, использованный в операторе, using, должен иметь не явное преобразование в System.Idisposable.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using ClosedXML.Excel;
using System.Collections.Generic;
 
 
namespace WpfApp1
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
 
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            var metrics = XlsxHelper.EnumerateMetrics("Книга1.xlsx").ToList();
            MetricsDataGrid.ItemsSource = metrics;
        }
        public class Metric
        {
            public int Alpha { get; set; }
            public int Beta { get; set; }
            public int Gamma { get; set; }
            public int Delta { get; set; }
        }
        public class XlsxHelper
        {
 
            public static IEnumerable<Metric> EnumerateMetrics(string xlsxpath)
            {
                // Открываем книгу
                using (var workbook = new XLWorkbook(xlsxpath))
                // Берем в ней первый лист
                using (var worksheet = workbook.Worksheets.Worksheet(1))
                {
                    // Перебираем диапазон нужных строк
                    for (int row = 2; row <= 3; ++row)
                    {
                        // По каждой строке формируем объект
                        var metric = new Metric
                        {
                            Alpha = worksheet.Cell(row, 1).GetValue<int>(),
                            Beta = worksheet.Cell(row, 2).GetValue<int>(),
                            Gamma = worksheet.Cell(row, 3).GetValue<int>(),
                            Delta = worksheet.Cell(row, 4).GetValue<int>(),
                        };
                        // И возвращаем его
                        yield return metric;
                    }
                }
            }
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.01.2019, 22:25
Ответы с готовыми решениями:

Использование нескольких условий в операторе if
Я решил создать что-то типо калькулятора, но есть одна проблема. У меня получилось сделать так, чтобы при вводе чисел больше 4 программа...

Использование placement-new в перегруженном операторе присваивания
Всем хей. Допустим, у меня определён конструктор копирования для класса T. Теперь я хочу перегрузить для T оператор присваивания и,...

Не хочет читать нужные данные, в условном операторе
Доброго времени:) Ребята, вот такое вырождение: preg_replace('#&lt;.IF\((.+?)=(.+?)\).&gt;(.+?)&lt;.END IF.&gt;#is', ('\\1' == '\\2') ? '\\3' :...

5
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16124 / 11248 / 2888
Регистрация: 21.04.2018
Сообщений: 33,081
Записей в блоге: 2
28.01.2019, 23:26
Цитата Сообщение от Esso11 Посмотреть сообщение
WPF + exel данные
Ну, это не WPF,.... чёрт знает что! WPF CB должен быть пустой, а у Вас в нём весь код расположен!
Цитата Сообщение от Esso11 Посмотреть сообщение
IXLWorksheet: тип, использованный в операторе, using, должен иметь не явное преобразование в System.Idisposable.
Вытащите var workbook = new XLWorkbook(xlsxpath) из using. В using можно использовать только типы реализующие Idisposable. Зачем Вам, вообще, здесь юсинги? Уберите их. Книгу, ели надо, закройте сами явно перед выходом из метода.
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
29.01.2019, 07:26  [ТС]
Элд Хасп, а как надо было бы сделать? Не хочется что бы былр четр знает что

Добавлено через 4 минуты
Элд Хасп, зачем using? Потому что я думал что его нужно использовать при подключении к базам данных или таблицам внешнего хранения...
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16124 / 11248 / 2888
Регистрация: 21.04.2018
Сообщений: 33,081
Записей в блоге: 2
29.01.2019, 12:22
Цитата Сообщение от Esso11 Посмотреть сообщение
зачем using? Потому что я думал что его нужно использовать при подключении к базам данных или таблицам внешнего хранения..
Прочитайте:
https://docs.microsoft.com/ru-... -statement
http://professorweb.ru/my/csha... 3/13_6.php

Цитата Сообщение от Esso11 Посмотреть сообщение
как надо было бы сделать? Не хочется что бы былр четр знает что
На вскидку - так:
C#
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
                // Открываем книгу
                var workbook = new XLWorkbook(xlsxpath);
                // Берем в ней первый лист
                var worksheet = workbook.Worksheets.Worksheet(1);
                // Перебираем диапазон нужных строк
                for (int row = 2; row <= 3; ++row)
                {
                        // По каждой строке формируем объект
                        var metric = new Metric
                        {
                            Alpha = worksheet.Cell(row, 1).GetValue<int>(),
                            Beta = worksheet.Cell(row, 2).GetValue<int>(),
                            Gamma = worksheet.Cell(row, 3).GetValue<int>(),
                            Delta = worksheet.Cell(row, 4).GetValue<int>(),
                        };
                        // И возвращаем его
                        yield return metric;
                }
                 workbook.Close();
                 yield break;
Добавлено через 1 минуту
Только не помню точно, есть или нет у XLWorkbook метод Close();
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
29.01.2019, 21:16  [ТС]
Элд Хасп, обязательно прочту перед проверкой вашего примера, спасибо
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16124 / 11248 / 2888
Регистрация: 21.04.2018
Сообщений: 33,081
Записей в блоге: 2
29.01.2019, 21:57
Цитата Сообщение от Esso11 Посмотреть сообщение
обязательно прочту перед проверкой
Еще прочитайте темы из цикла Готовые решения, примеры и рекомендации начинающим на WPF [Элд Хасп]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.01.2019, 21:57
Помогаю со студенческими работами здесь

Возможно ли использование Variant Excel, Book, Sheet без установленного Excel?
Можно ли сделать как написано в названии?

Использование WIA в WPF
Using WIA пишу вот так, в результате подчеркивает. Пространство имен не известно. в reference подключил кучу dll с названием...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru