Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запись в шаблон Excel-я 
V
    Опции темы
TwiSteR
Дата 21.3.2006, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кибер красавчег
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 15.6.2005
Где: World->Russia

Репутация: нет
Всего: 2



Приветствую уважаемые,
Есть что-то типа шаблона в экселе (аттач).
так вот как открыть его записать в него данные и сохранить в другом месте ?
Будте любезны помочь.

Присоединённый файл ( Кол-во скачиваний: 39 )
Присоединённый файл  _____12.zip 9,27 Kb
--------------------
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 21.3.2006, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Тема про эксель в .NET уже была, и не раз. Воспользуйтесь поиском по форуму.


--------------------
user posted image
PM MAIL WWW   Вверх
TwiSteR
Дата 21.3.2006, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кибер красавчег
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 15.6.2005
Где: World->Russia

Репутация: нет
Всего: 2



Цитата(mr.DUDA @ 21.3.2006, 13:29 Найти цитируемый пост)
Тема про эксель в .NET уже была, и не раз. Воспользуйтесь поиском по форуму.

Да была, ка непосредственно писать я уже вычитал, а вот как юзать так сказать шаблон. Т.е. открыть этот файл записать в него данные и "сохранить как"
--------------------
PM MAIL WWW ICQ   Вверх
TwiSteR
Дата 21.3.2006, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кибер красавчег
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 15.6.2005
Где: World->Russia

Репутация: нет
Всего: 2



Вообщем разобрался
Делаю так
Код

private void button1_Click(object sender, EventArgs e)
        {
            object optional = Missing.Value;

            Excel.Application app = new Excel.Application();

            Excel.Workbook workbook2 = app.Workbooks.Open(@"c:\sf.xls", optional, optional, optional,
                optional, optional, optional, optional, optional, optional, optional,
                optional, optional, optional, optional);
            Excel.Worksheet worksheet2 = (Excel.Worksheet)workbook2.Worksheets[1];

            worksheet2.Cells[17, 2] = "test1";
            worksheet2.Cells[18, 2] = "test2";
            worksheet2.Cells[19, 2] = "test3";
            worksheet2.Cells[17, 3] = "шт.";
            worksheet2.Cells[18, 3] = "шт.";
            worksheet2.Cells[19, 3] = "шт.";

            workbook2.SaveAs(@"c:\sf1.xls", optional, optional, optional, optional,
                optional, Excel.XlSaveAsAccessMode.xlShared, optional, optional,
                optional, optional, optional);

            app.Quit();


        }


А вот не подскажите как добавить ячейки ?
--------------------
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 21.3.2006, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Точно так же, через квадратные скобки.


--------------------
user posted image
PM MAIL WWW   Вверх
TwiSteR
Дата 21.3.2006, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кибер красавчег
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 15.6.2005
Где: World->Russia

Репутация: нет
Всего: 2



Цитата(mr.DUDA @ 21.3.2006, 15:20 Найти цитируемый пост)
Точно так же, через квадратные скобки.

Прости, но не понял
--------------------
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 21.3.2006, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(TwiSteR @ 21.3.2006, 14:22 Найти цитируемый пост)
Прости, но не понял


Код

worksheet2.Cells[1000, 2000] = "test10000";

не работает ?


--------------------
user posted image
PM MAIL WWW   Вверх
ivashkanet
Дата 21.3.2006, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Просто совет по Excel.

В Excel есть такая штука, как MacroRecoder.
Запускаешь его, включаешь запись макроса,
тыкаешь на кнопки, записываешь новую информацию в ячейки,
вносишь формулы, изменяешь настройки ...
Потом останавливаешь запись. И спокойно анализируешь код,
созданный MacroRecoder-ом. А он, молодец, создает код на каждое сделанное действие.
Даже изменение настроек программы и всякую другую ерунду.
Осталось преобразовать код из VB в C#, но ето несложно -- объекты
все-равно остались те же. smile
И это быстрее, чем мучать help smile .

smile Для общего развития: формулы в Excel хоть и русифицированы, но на внутреннем
языке пишутся по английски и ссылки относительные, типа R[-3]C[0]
(на три строки вверх, столбец тот же). Интересно smile
PM MAIL WWW ICQ   Вверх
TwiSteR
Дата 22.3.2006, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кибер красавчег
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 15.6.2005
Где: World->Russia

Репутация: нет
Всего: 2



mr.DUDA,
Это вставка данных в щит, а мне надо добавить ячейки к примеру в середину листа
--------------------
PM MAIL WWW ICQ   Вверх
TwiSteR
Дата 22.3.2006, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кибер красавчег
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 15.6.2005
Где: World->Russia

Репутация: нет
Всего: 2



ivashkanet,
вот по поводу Макроса
Код

Sub макрос11()

    Rows("17:17").Select
    Selection.Insert Shift:=xlDown
    Selection.Insert Shift:=xlDown
    Selection.Insert Shift:=xlDown
End Sub

Вот как его переделать в C#
--------------------
PM MAIL WWW ICQ   Вверх
TwiSteR
Дата 22.3.2006, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кибер красавчег
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 15.6.2005
Где: World->Russia

Репутация: нет
Всего: 2



Разобрался Делаю так
Код

range.Select();
  while (_reader.Read())
                            {
                                //ranger.Insert();
                                range.Insert(optional, optional);



--------------------
PM MAIL WWW ICQ   Вверх
ivashkanet
Дата 22.3.2006, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(TwiSteR @ 22.3.2006, 09:40 Найти цитируемый пост)
Это вставка данных в щит, а мне надо добавить ячейки к примеру в середину листа

Так в листе ж ячейки присутствуют всегда??? (6400 х JK, в общем туча???)

PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 22.3.2006, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(ivashkanet @ 22.3.2006, 13:20 Найти цитируемый пост)
Так в листе ж ячейки присутствуют всегда??? (6400 х JK, в общем туча???)

ИМХО, он имел ввиду "вставить в лист, со сдвигом существующих значений". То есть как бы вставить в середину строку, отдельную ячейку и т.п., не затирая существующих ячеек.


--------------------
user posted image
PM MAIL WWW   Вверх
ivashkanet
Дата 22.3.2006, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(mr.DUDA @ 22.3.2006, 14:22 Найти цитируемый пост)
ИМХО, он имел ввиду "вставить в лист, со сдвигом существующих значений". То есть как бы вставить в середину строку, отдельную ячейку и т.п., не затирая существующих ячеек.

ААААААА.....
Спасибо
PM MAIL WWW ICQ   Вверх
TwiSteR
Дата 23.3.2006, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кибер красавчег
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 15.6.2005
Где: World->Russia

Репутация: нет
Всего: 2



Цитата(mr.DUDA @ 22.3.2006, 14:22 Найти цитируемый пост)
ИМХО, он имел ввиду "вставить в лист, со сдвигом существующих значений". То есть как бы вставить в середину строку, отдельную ячейку и т.п., не затирая существующих ячеек.

Да именно, и нашел как это сделать. Всем спасибо !
--------------------
PM MAIL WWW ICQ   Вверх
Mag
Дата 19.5.2007, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 23.6.2005

Репутация: нет
Всего: нет



Какое пространство имен подключить и ДЛЛ для работы с Excel, точнее вывод с датасета в Эксель?
--------------------
В  каждой черной комнате есть выход - всегда есть выход с любой ситуации!
PM MAIL WWW ICQ   Вверх
Mag
Дата 22.5.2007, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 23.6.2005

Репутация: нет
Всего: нет



Помощь действительно нужна!
--------------------
В  каждой черной комнате есть выход - всегда есть выход с любой ситуации!
PM MAIL WWW ICQ   Вверх
Alexb11
Дата 14.11.2007, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 19.4.2007

Репутация: нет
Всего: нет



Как быть, если Excel 2007?
PM MAIL   Вверх
Azzdorf
Дата 14.11.2007, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 29.3.2007

Репутация: нет
Всего: нет



Цитата(Alexb11 @ 14.11.2007,  10:18)
Как быть, если Excel 2007?

А что там нетак???? smile 
--------------------
Иногда шаг вперед - это результат хорошего пинка под зад.
PM MAIL   Вверх
Azzdorf
  Дата 14.11.2007, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 29.3.2007

Репутация: нет
Всего: нет



скампиль и запусти для примера - если сработает - знач всё ОК smile 

если нет - пиши решим проблемку smile 

Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Data.ProviderBase;
using System.Data.Sql;
using System.Drawing;
using System.Reflection;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using Office;

public class MyExcel : Form
{
    [method: STAThread]
    public static int Main(string[] args)
    {
        Application.Run(new MyExcel());
        return 0;
    }

    MainMenu mainM;
    public DataGridView dgvTable = new DataGridView();
    public TextBox txtRequest = new TextBox();
    public Button btnRequest = new Button();
    public Button btnSeveZvit = new Button();

    DataSet myDS;

    string dbURL;
    string dbREQU;
    string xlsBlankURL;
    string xlsResultURL;

    public MyExcel()
    {
        CenterToScreen();
        this.Size = new Size(400, 400);

        InitializeComponent();
    }
    // Controls
    public void InitializeComponent()
    {
        FormBorderStyle = FormBorderStyle.FixedSingle;
        MainMenu_MethodConstr();
        DataGridView_MethodConstr();
        TextBox_MethodConstr();
        Button_MethodConstr();
    }
    public void MainMenu_MethodConstr()
    {
        mainM = new MainMenu();
        MenuItem miGeneral = mainM.MenuItems.Add("General");
        MenuItem miDataBase = miGeneral.MenuItems.Add("Data Base");
        miDataBase.MenuItems.Add(new MenuItem("Choose db", new EventHandler(this.ChooseDB_Click), Shortcut.CtrlO));
        MenuItem miRequest = miGeneral.MenuItems.Add("Request");
        miRequest.MenuItems.Add(new MenuItem("Do Request", new EventHandler(this.DoRequest_Click), Shortcut.CtrlD));
        miRequest.MenuItems.Add(new MenuItem("Save Request", new EventHandler(this.SaveRequest_Click), Shortcut.CtrlS));
        this.Menu = mainM;
    }
    public void DataGridView_MethodConstr()
    {
        dgvTable.Location = new Point(10, 10);
        dgvTable.Size = new Size(375, 200);
        dgvTable.ReadOnly = true;
        Controls.Add(dgvTable);
    }
    public void TextBox_MethodConstr()
    {
        txtRequest.Location = new Point(10, 220);
        txtRequest.Size = new Size(375, 25);
        txtRequest.TextAlign = HorizontalAlignment.Center;
        txtRequest.Text = "SELECT * FROM table1";
        Controls.Add(txtRequest);
    }
    public void Button_MethodConstr()
    {
        btnRequest.Location = new Point(10, 250);
        btnRequest.Size = new Size(100, 25);
        btnRequest.Text = "Do Request";
        btnRequest.FlatStyle = FlatStyle.Flat;
        btnRequest.Click += new EventHandler(btnRequest_Click);
        btnRequest.Enabled = false;
        Controls.Add(btnRequest);

        btnSeveZvit.Location = new Point(120, 250);
        btnSeveZvit.Size = new Size(100, 25);
        btnSeveZvit.Text = "Save Request";
        btnSeveZvit.FlatStyle = FlatStyle.Flat;
        btnSeveZvit.Click += new EventHandler(btnSeveZvit_Click);
        btnSeveZvit.Enabled = false;
        Controls.Add(btnSeveZvit);
    }
    // MainMenu Procesing
    private void ChooseDB_Click(object sender, EventArgs e)
    {
        OpenDB();
    }
    private void DoRequest_Click(object sender, EventArgs e)
    {
        DoRequest();
    }
    private void SaveRequest_Click(object sender, EventArgs e)
    {
        SaveRequest();
    }
    // Controls Provesung
    private void btnRequest_Click(object sender, EventArgs e)
    {
        DoRequest();
    }
    private void btnSeveZvit_Click(object sender, EventArgs e)
    {
        SaveRequest();
    }
    // DataBase
    public void OpenDB()
    {
        OpenFileDialog myOD = new OpenFileDialog();
        myOD.InitialDirectory = ".";
        myOD.Filter = "Access DB files (*.mdb)|*.mdb|All files(*.*)|*.*";
        myOD.FilterIndex = 1;
        myOD.RestoreDirectory = true;

        if (myOD.ShowDialog() == DialogResult.OK)
        {
            if (myOD.FileName.Contains(".mdb"))
            {
                dbURL = null;
                dbURL = myOD.FileName.ToString();
            }
        }
        btnRequest.Enabled = true;
    }
    // Request
    public void DoRequest()
    {
        dbREQU = txtRequest.Text;

        OleDbConnection cn = new OleDbConnection();
        cn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; data source = " + dbURL + "";
        cn.Open();

        string sqlSELECT = dbREQU;
        OleDbDataAdapter dAdapt = new OleDbDataAdapter(sqlSELECT, cn);

        myDS = new DataSet("baseDS");
        dAdapt.Fill(myDS, "baseDT");

        cn.Close();

        dgvTable.DataSource = myDS.Tables["baseDT"];
        btnSeveZvit.Enabled = true;
    }
    public void SaveRequest()
    {
        int toI = myDS.Tables["baseDT"].Rows.Count;
        int toJ = myDS.Tables["baseDT"].Columns.Count;

        string[,] strArr = new string[toI, toJ];
        
        DataTable dt = myDS.Tables["baseDT"];
        
        for (int i = 0; i <= toI-1; i++)
        {
            for (int j = 0; j <= toJ-1; j++)
            {
                strArr[i, j] = dt.Rows[i][j].ToString();
            }
        }

        int cellInside = 3;
        int cellOut = cellInside + toI - 1;

        OpenFileDialog ofd = new OpenFileDialog();
        ofd.InitialDirectory = ".";
        ofd.Filter = "Excel file BLANK (*.xls)|*.xls|All files(*.*)|*.*";
        ofd.FilterIndex = 1;
        ofd.RestoreDirectory = true;

        if (ofd.ShowDialog() == DialogResult.OK)
        {
            if (ofd.FileName.Contains(".xls"))
            {
                xlsBlankURL = null;
                xlsBlankURL = ofd.FileName.ToString();

                txtRequest.Text = xlsBlankURL;

                object optional = Missing.Value;
                Excel.Application app = new Excel.Application();
                Excel.Workbook wb1 = app.Workbooks.Open(xlsBlankURL, optional, optional, optional, optional, optional, optional, optional, optional, optional, optional, optional, optional);
                Excel.Worksheet ws1 = (Excel.Worksheet)wb1.Worksheets[1];
                Excel.Range rng;

                SaveFileDialog sfd = new SaveFileDialog();
                sfd.InitialDirectory = ".";
                sfd.Filter = "Excel file RESULT (*.xls)|*.xls|All files(*.*)|*.*";
                sfd.FilterIndex = 1;
                sfd.RestoreDirectory = true;

                if (sfd.ShowDialog() == DialogResult.OK)
                {
                    if (sfd.FileName.Contains(".xls"))
                    {
                        xlsResultURL = null;
                        xlsResultURL = sfd.FileName.ToString();

                        rng = ws1.get_Range("A"+cellInside+"", "C"+cellOut+"");
                        
                        rng.Value = strArr;

                        wb1.SaveAs(xlsResultURL, optional, optional, optional, optional, optional, Excel.XlSaveAsAccessMode.xlShared, optional, optional, optional, optional);

                        txtRequest.Text = xlsResultURL;
                        app.Quit();
                    }
                }
            }
        }
    }
}


да тут первый раз предложит выбрать ексель файл(шаблон) куда залить инфо (может быть с багами - учебный пример)

Это сообщение отредактировал(а) Azzdorf - 14.11.2007, 13:15
--------------------
Иногда шаг вперед - это результат хорошего пинка под зад.
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1223 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.