Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
1 / 1 / 2
Регистрация: 02.10.2013
Сообщений: 76

Текстовые файлы на разные листы в один документ Excel

20.02.2017, 18:48. Показов 1844. Ответов 10

Студворк — интернет-сервис помощи студентам
Народ, подскажите как сделать:
есть текстовые файлы с данными - нужно загнать все эти текстовые файлы в один документ эксель, но в разные листы, так как я это реализовал - работает но мегамедленно

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
Excel.Application excel = new Excel.Application(); //создаем COM-объект Excel
 //excel.Visible = true; //делаем объект видимым
 excel.SheetsInNewWorkbook = openFileDialog4.FileNames.Length;//количество листов в книге
 excel.Workbooks.Add(Type.Missing); //добавляем книгу
 Excel.Workbook workbook = excel.Workbooks[1]; //получаем ссылку на первую открытую книгу
 for (int i = 1; i <= openFileDialog4.FileNames.Length; i++) //openFileDialog4.FileNames[i]
 {
     Excel.Worksheet sheet = workbook.Worksheets.get_Item(i);//получаем ссылку на первый лист
 
     using (StreamReader sr = new StreamReader(openFileDialog4.FileNames[i-1]))
     {         
         string line;
         int rowsCount = 1;
         while ((line = sr.ReadLine()) != null)
         {
             string[] data = line.Split(new string[] { "\t" }, StringSplitOptions.RemoveEmptyEntries); 
             for (int ai = 1; ai <= data.Length; ai++)
             {
                   sheet.Cells[rowsCount, ai].Value = data[ai-1];
             }
             rowsCount++;
         }
     }
 }
 String xlsname = path.Remove(path.Length - 4, 4);
 workbook.SaveAs(xlsname, Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
 workbook.Close();
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.02.2017, 18:48
Ответы с готовыми решениями:

Положить два DataTable в один Excel на разные листы
Всем привет. Нужно при нажатие на кнопку. Положить два datatable в один excel. на разные листы. как это сделать? у меня почему-то...

В зависимости от выбора в ComboBox загружать в один и тот же RichTextBox разные текстовые файлы
как при нажатии из выпадающего списка комбобокс загружать в один и тот же richtextbox разные текстовые файлы? нужен код

Перенос данных excel -excel на разные листы
Доброго времени суток. Возникла небольшая проблема: Переношу данные из книги в книгу, но в каждой книге по 3 листа, а данные...

10
1 / 1 / 2
Регистрация: 02.10.2013
Сообщений: 76
26.02.2017, 16:56  [ТС]
народ, хоть подскажите куда копать...
0
53 / 53 / 17
Регистрация: 12.02.2017
Сообщений: 261
26.02.2017, 17:15
tigorlab, можете загрузить пример?
Excel в C#
0
1 / 1 / 2
Регистрация: 02.10.2013
Сообщений: 76
27.02.2017, 00:27  [ТС]
пример текстовых файлов?
0
53 / 53 / 17
Регистрация: 12.02.2017
Сообщений: 261
27.02.2017, 06:49
tigorlab, нет. Пример текстового файла и проекта который сохраняет файл в эксель.
0
1 / 1 / 2
Регистрация: 02.10.2013
Сообщений: 76
27.02.2017, 10:32  [ТС]
примеры файлов вложил, проект не могу
Вложения
Тип файла: txt 1.txt (19 байт, 9 просмотров)
Тип файла: txt 2.txt (18 байт, 5 просмотров)
Тип файла: txt 4.txt (19 байт, 4 просмотров)
0
53 / 53 / 17
Регистрация: 12.02.2017
Сообщений: 261
27.02.2017, 21:53
tigorlab, Скореей всего в вашем коде у вас зависают циклы при добавлении значений.
0
1 / 1 / 2
Регистрация: 02.10.2013
Сообщений: 76
28.02.2017, 00:17  [ТС]
да нет, код работает правильно - все файлы собирает в текстовый документ, но 13 документов по 40к добавляет 12 часов)
0
53 / 53 / 17
Регистрация: 12.02.2017
Сообщений: 261
28.02.2017, 07:41
tigorlab, Метод add позволяет добавить новый лист к коллекции листов в книге.

C#
1
2
3
4
Excel.Worksheet newWorkSheet;
newWorkSheet = 
    (Excel.Worksheet)ThisWorkbook.Worksheets.Add(
    Type.Missing, Type.Missing, Type.Missing, Type.Missing);

Следующий код копирует первый лист в текущей рабочей книге, а также размещает копию после третьего листа.

C#
1
2
((Excel.Worksheet)(ThisApplication.ActiveWorkbook.Sheets[1])).Copy(
    Type.Missing, ThisApplication.ActiveWorkbook.Sheets[3]);
0
1 / 1 / 2
Регистрация: 02.10.2013
Сообщений: 76
28.02.2017, 11:04  [ТС]
спасибо за ответ, но честно говоря совсем не понял для чего копировать первый лист после третьего...
0
53 / 53 / 17
Регистрация: 12.02.2017
Сообщений: 261
28.02.2017, 12:36
tigorlab Текстовые файлы можно записать в грид и уже от туда отправить в эксель вот

Кликните здесь для просмотра всего текста
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
using System;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
using Excel = Microsoft.Office.Interop.Excel; 
 
namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection cnn ;
            string connectionString = null;
            string sql = null;
 
            connectionString = "data source=servername;initial catalog=databasename;user id=username;password=password;";
            cnn = new SqlConnection(connectionString);
            cnn.Open();
            sql = "SELECT * FROM Product";
            SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn);
            DataSet ds = new DataSet();
            dscmd.Fill(ds);
 
            dataGridView1.DataSource = ds.Tables[0];
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            Excel.Application xlApp ;
            Excel.Workbook xlWorkBook ;
            Excel.Worksheet xlWorkSheet ;
            object misValue = System.Reflection.Missing.Value;
 
            xlApp = new Excel.Application();
            xlWorkBook = xlApp.Workbooks.Add(misValue);
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
            int i = 0;
            int j = 0; 
 
            for (i = 0; i <= dataGridView1.RowCount  - 1; i++)
            {
                for (j = 0; j <= dataGridView1.ColumnCount  - 1; j++)
                {
                    DataGridViewCell cell = dataGridView1[j, i];
                    xlWorkSheet.Cells[i + 1, j + 1] = cell.Value;
                }
            }
 
            xlWorkBook.SaveAs("csharp.net-informations.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
            xlWorkBook.Close(true, misValue, misValue);
            xlApp.Quit();
 
            releaseObject(xlWorkSheet);
            releaseObject(xlWorkBook);
            releaseObject(xlApp);
 
            MessageBox.Show("Excel file created , you can find the file c:\\csharp.net-informations.xls");
        }
 
        private void releaseObject(object obj)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                obj = null;
            }
            catch (Exception ex)
            {
                obj = null;
                MessageBox.Show("Exception Occured while releasing object " + ex.ToString());
            }
            finally
            {
                GC.Collect();
            }
        }
 
    }
}


а вообще вам нужно скачать учебник по Excel с C#
http://csharp.net-informations... torial.htm и взять от туда пример.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.02.2017, 12:36
Помогаю со студенческими работами здесь

Копировать одноименные листы из файлов Excel в один файл Excel
nshardarbekov@mail.ru Добрый день, уважаемые! Помогите пожалуйста создать макрос, для того чтобы собрать (скопировать) листы с...

Копировать листы из файлов Excel в один файл Excel
Добрый день, господа! Помогите создать макрос, для того чтобы собрать(скопировать) листы из разных файлов Excel в один файл Excel. ...

Delphi экспорт из stringgrid в excel файла на разные листы
Добрый вечер! Подскажите как экспортировать данные из StringGrid1 в excel файл, при этом нужно, чтобы определенные ячейки StringGrid1...

Как экспортировать таблицы из access в excel на разные листы?
Привет, подскажите пожалуйста, как заставить процедуру экспортировать таблицы из access в excel на разные листы? Всем спасибо!

Объединить листы excel в один
Доброе время суток! Еще раз нуждаюсь в вашей помощи! Нужен макрос для объединение разных таблиц (книг) excel в один как в примере. ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
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-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru