Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
Cандальная шляпа
 Аватар для Doctor Nano
42 / 42 / 36
Регистрация: 12.01.2012
Сообщений: 187

Чтение и редактирование файлов Excel

12.07.2015, 18:36. Показов 5852. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер. Никогда не работал с внешними файлами формата Excel и в голове трудно усваивается, как с ними работать.
Подскажите и научите пожалуйста хотя бы минимум - считать с него данные (не весь файл, а к примеру только определенный столбик) и конечно как сохранить в этот файл после некой их обработки.

Буду очень признателен за помощь.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.07.2015, 18:36
Ответы с готовыми решениями:

Чтение больших файлов Excel
пытаюсь считать данные с XLSX файла (500 000 строк). на MSDN наткнутся на статью каким образом это можно сделать....

Эффективное чтение из Excel файлов
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Xml.Linq; using ExcelLibrary; ...

Чтение и редактирование txt файлов
Привет всем Нужен скрипт, скрипт будет: Читать файл test.txt, считывать какое там число(0,1,333) к этому числу добавлять 1 перезаписывать...

2
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
12.07.2015, 21:22
Лучший ответ Сообщение было отмечено Doctor Nano как решение

Решение

Посмотрите, здесь всё есть:
http://wladm.narod.ru/C_Sharp/comexcel.html
1
Warrior
 Аватар для _exp10der_
500 / 427 / 177
Регистрация: 23.11.2014
Сообщений: 932
12.07.2015, 21:43
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Open XML https://msdn.microsoft.com/ru-... 48854.aspx

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
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using DocumentFormat.OpenXml.Packaging;
using lol;
 
namespace ExcelQuery
{
    internal class Program
    {
        private static void Main(string[] args)
        {
 
            var list = new List<string>();
            using (var doc =
                SpreadsheetDocument.Open("test.xlsx", false))
            {
                var worksheet =
                    (WorksheetPart) doc.WorkbookPart.GetPartById("rId1");
 
                Console.WriteLine("Запрос по A:");
                Console.WriteLine();
                foreach (var cell in worksheet.Rows().SelectMany(row => row.Cells().Where(n=> n.ColumnId  == "A")))
                {
                    Console.WriteLine(cell.GetString());
                    list.Add(cell.GetString());
                }
 
                File.WriteAllLines("file1.txt",list);
 
                Console.WriteLine();
                list.Clear();
 
                Console.WriteLine("Запрос по A и B:");
 
                foreach (var cell in worksheet.Rows().SelectMany(row => row.Cells().Where(n => n.ColumnId == "A" || n.ColumnId == "B")))
                {
                    Console.WriteLine(cell.GetString());
                    list.Add(cell.GetString());
                }
                File.WriteAllLines("file2.txt",list);
 
                Console.ReadKey(true);
            }
        }
    }
}
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using DocumentFormat.OpenXml.Packaging;
 
namespace lol
{
    public class Row
    {
        public XElement RowElement { get; set; }
        public string RowId { get; set; }
        public string Spans { get; set; }
        public IEnumerable<Cell> Cells()
        {
            XNamespace s = "http://schemas.openxmlformats.org/spreadsheetml/2006/main";
            SpreadsheetDocument doc = (SpreadsheetDocument)Parent.OpenXmlPackage;
            SharedStringTablePart sharedStringTable = doc.WorkbookPart.SharedStringTablePart;
            return
                from cell in this.RowElement.Elements(s + "c")
                let cellType = (string)cell.Attribute("t")
                let sharedString = cellType == "s" ?
                    sharedStringTable
                    .GetXDocument()
                    .Root
                    .Elements(s + "si")
                    .Skip((int)cell.Element(s + "v"))
                    .First()
                    .Descendants(s + "t")
                    .StringConcatenate(e => (string)e)
                    : null
                let column = (string)cell.Attribute("r")
                select new Cell(this)
                {
                    CellElement = cell,
                    Row = (string)RowElement.Attribute("r"),
                    Column = column,
                    ColumnId = column.Split('0', '1', '2', '3', '4', '5', '6', '7', '8', '9').First(),
                    Type = (string)cell.Attribute("t"),
                    Formula = (string)cell.Element(s + "f"),
                    Value = (string)cell.Element(s + "v"),
                    SharedString = sharedString
                };
        }
        public WorksheetPart Parent { get; set; }
        public Row(WorksheetPart parent) { Parent = parent; }
 
    }
 
    public class Cell
    {
        public XElement CellElement { get; set; }
        public string Row { get; set; }
        public string Column { get; set; }
        public string ColumnId { get; set; }
        public string Type { get; set; }
        public string Value { get; set; }
        public string Formula { get; set; }
        public string SharedString { get; set; }
        public Row Parent { get; set; }
        public Cell(Row parent) { Parent = parent; }
 
        public string GetString()
        {
            return SharedString ?? Value;
        }
    }
 
    public static class LocalExtensions
    {
        public static IEnumerable<Row> Rows(this WorksheetPart worksheetPart)
        {
            XNamespace s = "http://schemas.openxmlformats.org/spreadsheetml/2006/main";
            return
                from row in worksheetPart
                    .GetXDocument()
                    .Root
                    .Element(s + "sheetData")
                    .Elements(s + "row")
                select new Row(worksheetPart)
                {
                    RowElement = row,
                    RowId = (string)row.Attribute("r"),
                    Spans = (string)row.Attribute("spans")
                };
        }
 
        public static string StringConcatenate<T>(this IEnumerable<T> source,
            Func<T, string> func)
        {
            StringBuilder sb = new StringBuilder();
            foreach (T item in source)
                sb.Append(func(item));
            return sb.ToString();
        }
        public static XDocument GetXDocument(this OpenXmlPart part)
        {
            XDocument xdoc = part.Annotation<XDocument>();
            if (xdoc != null)
                return xdoc;
            using (StreamReader sr = new StreamReader(part.GetStream()))
            using (XmlReader xr = XmlReader.Create(sr))
                xdoc = XDocument.Load(xr);
            part.AddAnnotation(xdoc);
            return xdoc;
        }
    }
}
Вложения
Тип файла: rar ExcelQuery.rar (3.30 Мб, 63 просмотров)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.07.2015, 21:43
Помогаю со студенческими работами здесь

Чтение и редактирование файлов .cod
Как можно открыть и посмотреть что в этом файле, какие данные и т.д. возможно изменить?

Чтение и редактирование DBF файлов
Нужно разработать приложение, которое будет открывать произвольный DBF файл и выводить его содержимое в dataGridView. В приложение должна...

Чтение, редактирование и запись данных из MS Excel
Доброго времени суток товарищи! Программирую на VB 2010 не долго, можно сказать на &quot;вы&quot;. Подскажите пожалуйста как сделать...

Чтение Excel файлов RTF.
Привет. Есть ли способ переноса RTF файла в Excel 2003 (или 2007). Файл от программы на базе 1С(АСУ Интегратор). Возникла...

Запись/чтение файлов в Excel
Задача такая: Есть: Строка (фиксированного формата) в Excel-листе, которая периодически обновляется (перезаписывается). Нужно:...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru