Member 13403292 Ответов: 1

Я не могу открыть свой файл excel динамично, и мой лист excel не показывает имя coloumn, как показано в моей таблице SQL.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Configuration;
using Excel = Microsoft.Office.Interop.Excel;

namespace WindowsFormsApplication9
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection cnn;
            string connectionString = null;
            string sql = null;
            string data = null;
            int i = 0;
            int j = 0;

            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);

            connectionString = "Data Source=VISHAL-PC; Initial Catalog=arif; Integrated security=true";
           
            cnn = new SqlConnection(connectionString);
            cnn.Open();
            sql = "SELECT * FROM khan1";
            SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn);
            DataSet ds = new DataSet();
            dscmd.Fill(ds);


            for (i = 0; i <= ds.Tables[0].Rows.Count -1; i++)
            {
                for (j = 0; j <= ds.Tables[0].Columns.Count -1; j++)
                {
                    

                    data = ds.Tables[0].Rows[i].ItemArray[j].ToString();
                   
                    
                        xlWorkSheet.Cells[i + 2, j + 1] = data;
                        
                }
            }
            
            xlWorkBook.SaveAs("E:\\Arif khan\\ted.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  E:\\Arif khan\\ted.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();
            }

        }
    }
}


Что я уже пробовал:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Configuration;
using Excel = Microsoft.Office.Interop.Excel;

namespace WindowsFormsApplication9
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection cnn;
            string connectionString = null;
            string sql = null;
            string data = null;
            int i = 0;
            int j = 0;

            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);

            connectionString = "Data Source=VISHAL-PC; Initial Catalog=arif; Integrated security=true";
           
            cnn = new SqlConnection(connectionString);
            cnn.Open();
            sql = "SELECT * FROM khan1";
            SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn);
            DataSet ds = new DataSet();
            dscmd.Fill(ds);


            for (i = 0; i <= ds.Tables[0].Rows.Count -1; i++)
            {
                for (j = 0; j <= ds.Tables[0].Columns.Count -1; j++)
                {
                    

                    data = ds.Tables[0].Rows[i].ItemArray[j].ToString();
                   
                    
                        xlWorkSheet.Cells[i + 2, j + 1] = data;
                        
                }
            }
            
            xlWorkBook.SaveAs("E:\\Arif khan\\ted.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  E:\\Arif khan\\ted.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();
            }

        }
    }
}

Richard MacCutchan

В чем вопрос?

Member 13403292

вопрос в том, как я могу экспортировать execl из базы данных sql с тем же именем coloumn, а лист excel сохранить во время выполнения и открыть также.

Richard MacCutchan

Используйте пространство имен Excel Interop: Microsoft.Офис.Взаимодействие.Пространство имен Excel ()[^]

Member 13403292

можете ли вы мне прислать весь код?

Richard MacCutchan

Нет, конечно, нет. Мы здесь не для того, чтобы делать за вас вашу работу.

Member 13403292

но это был не правильный ответ, который вы прислали мне в комментарии.

Richard MacCutchan

Тогда, пожалуйста, объясните точно, что ваш код делает неправильно.

Member 13403292

мой код работает, но лист excel продукта показывает только данные...не показывает имя столбца . и я хочу добавить некоторую дополнительную функцию, которая при запуске программы автоматически сохранит и откроет лист продукта во время выполнения.

1 Ответов

Рейтинг:
0

Graeme_Grant

Вы можете сделать это непосредственно в самом Excel с помощью прилагаемого инструмента DBQuery. Вот инструкции о том, как:
* Используйте Microsoft Query для извлечения внешних данных-Excel[^]
* Как Создать Запрос Excel! - Ютьюб[^]

Или более продвинутый подход VBA:
* Запрос базы данных SQL Server из формулы Excel с помощью VBA-YouTube[^]


Member 13403292

нет это не поможет

Graeme_Grant

Это альтернативный и эффективный метод, который повысит производительность вашего приложения, используя минимальный код и используя возможности Excel.

Создайте dbQuery в Excel, сохраните его. запишите макрос, выполняющий его, и теперь у вас есть команды excel vba для добавления в ваш код C#. Теперь вы можете открыть приложение Excel, загрузить и выполнить запрос, и excel сделает всю тяжелую работу за вас. гораздо проще, чем сделать запрос в вашем приложении, а затем вытолкнуть все данные в excel.