sam.198979 Ответов: 6

Как экспортировать данные таблицы базы данных в файл excel в C# при нажатии кнопки?


Привет
Как экспортировать данные таблицы базы данных в файл excel.

У меня есть код нажатия кнопки, который получает пустой файл excel.

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

мне нужна помощь, чтобы сделать эти шаги.

частная button1_Click_1 недействительным(объект отправителя, EventArgs в электронной)
{
Microsoft.Офис.Взаимодействие.Превосходить.Приложение xl = по умолчанию (Microsoft.Офис.Взаимодействие.Превосходить.Приложение);
xl = новый Microsoft.Офис.Взаимодействие.Превосходить.Приложение();
Microsoft.Офис.Взаимодействие.Превосходить.Рабочая книга wb = default(Microsoft.Офис.Взаимодействие.Превосходить.Рабочая тетрадь);
ВБ = ХL.Книги.Добавь();
Microsoft.Офис.Взаимодействие.Превосходить.Рабочий лист ws = default(Microsoft.Офис.Взаимодействие.Превосходить.Рабочий лист);
ws = WB. ActiveSheet;

размер XL.Видимое = истинное;
}


Спасибо Регредес
Сэм.198979

6 Ответов

Рейтинг:
2

sam.198979

I tried this code it's working.
 

 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 Microsoft.Office.Interop.Excel.Application();
            xlWorkBook = xlApp.Workbooks.Add(misValue);
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
 
            connectionstring ="Data Source=IN-WTS-SAM;Initial Catalog=MSNETDB;Integrated Security=True;Pooling=False";
            cnn = new SqlConnection(connectionstring);
            cnn.Open();
            sql = "SELECT * FROM Emp";
            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 + 1, j + 1] = data;
                }
            }
 

            xlWorkBook.SaveAs("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 D:\\Sam-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();
            }
 
        }
    }

 

But in Excel it's displaying only columns data only.
 
I Want with column names also in excel file.
 
can anyone help.



Спасибо
Сэм.198979


Рейтинг:
1

Jignesh Khant

private void ExportToExcel(string strFileName, GridView gv)
{
Ответ.ClearContent();
Ответ.AddHeader ("content-disposition", "attachment; filename=" + strFileName);
Ответ.ContentType = " приложение / excel";
Системы.ИО.Stringwriter не ео = новая система.ИО.Stringwriter не();
HtmlTextWriter htw = новый HtmlTextWriter(sw);
gv. RenderControl(htw);
Ответ.Писать(ув.Метод toString());
Ответ.Конец();
}


охраняемых недействительными btnexport_Click(объект отправителя, EventArgs в электронной)
{
DataTable dt = новый DataTable();
Sqlconnection objcon = new SqlConnection(System.Конфигурация.Конфигурационный менеджер.ConnectionStrings ["connstr"].Метод toString());
SqlDataAdapter objda = new SqlDataAdapter ("select * from attendance", objcon);
objda.Заполнить(ДТ);
gvreport.Источник данных = ДТ;
gvreport.Привязку();
ExportToExcel("Report.xls", gvreport);
gvreport = нуль;
gvreport.Распоряжаться();
}

общественного переопределить недействительными VerifyRenderingInServerForm(управление )
{
/ * Подтверждает, что элемент управления HtmlForm визуализируется для указанного ASP.NET
управление сервером во время выполнения. */
}


Member 13502779

Я пробовал этот код, но добавляет элементы управления формой в файл excel

Рейтинг:
1

Hitesh Gohel

Привет ,
Пожалуйста, попробуйте этот код, как показано ниже..

<asp:button id="btnExport" runat="server" text="Export to Excel" xmlns:asp="#unknown">
    onclick="btnExport_Click" /></asp:button>


И
protected void btnExport_Click(object sender, EventArgs e)
    {
        SqlConnection cnn;
        string connectionstring = null;
        string sql = null;

        Response.Clear();
        Response.AddHeader("content-disposition", "attachment;filename=Members.xls");

        Response.ContentType = "application/vnd.ms-xls";

        connectionstring ="Data Source=IN-WTS-SAM;Initial Catalog=MSNETDB;Integrated Security=True;Pooling=False";
            cnn = new SqlConnection(connectionstring);
            cnn.Open();
            sql = "SELECT * FROM Emp";
            SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn);
            DataSet ds = new DataSet();
            dscmd.Fill(ds);

        Repeater Repeater1 = new Repeater();
        Repeater1.DataSource = ds;
        Repeater1.HeaderTemplate = new MyTemplate(ListItemType.Header, null);
        Repeater1.ItemTemplate = new MyTemplate(ListItemType.Item, ds);
        Repeater1.FooterTemplate = new MyTemplate(ListItemType.Footer, null);
        Repeater1.DataBind();

        System.IO.StringWriter stringWrite = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
        Repeater1.RenderControl(htmlWrite);
        Response.Write(stringWrite.ToString());
        Response.End();
    }

    public class MyTemplate : ITemplate
    {
        ListItemType type;
        LiteralControl lc;
        DataSet ds;
        static int ctr;
        public MyTemplate(ListItemType type, DataSet ds)
        {
            this.type = type;
            this.ds = ds;
            ctr = 0;
        }
        public void InstantiateIn(Control container)
        {
            switch (type)
            {
                case ListItemType.Header:
                    lc = new LiteralControl("<table border="1"><tr><th>User name</th><th>Email-Id</th></tr>");
                    break;
                case ListItemType.Item:
                    lc = new LiteralControl("<tr><td>" + ds.Tables[0].Rows[ctr]["UserName"] + "</td><td>" + ds.Tables[0].Rows[ctr]["Email"] + "</td></tr>");
                    ctr++;
                    break;
                case ListItemType.Footer:
                    lc = new LiteralControl("</table>");
                    ctr = 0;
                    break;
            }
            container.Controls.Add(lc);
        }
    }


Рейтинг:
0

Shihab Jamil

Я знаю, что прошло много времени, чтобы ответить, но все же помочь другим:

Для тех, кто хочет добавить заголовок столбца в лист excel:

foreach (DataTable dt in ds.Tables)
    {
       foreach (DataColumn dc in dt.Columns)
           {
              columnName.Add(dc.ColumnName.ToString());
           }
    }

for (j = 0; j <= ds.Tables[0].Columns.Count - 1; j++)
     {
      xlWorkSheet.Cells[1, j + 1] = columnName[j].ToString();
     }


Рейтинг:
0

sam.198979

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 Microsoft.Office.Interop.Excel.Application();
            xlWorkBook = xlApp.Workbooks.Add(misValue);
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

            connectionstring ="Data Source=HostName;Initial Catalog=MSNETDB;Integrated Security=True;Pooling=False";
            cnn = new SqlConnection(connectionstring);
            cnn.Open();
            sql = "SELECT * FROM Emp";
            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 + 1, j + 1] = data;
                }
            }
            
            xlApp.Visible = true;
}



Но мне нужны данные с именем столбца в файле excel.
это то же самое, что и таблица базы данных.

кто-нибудь может мне помочь.
Спасибо
Сэм.198979


soubhagya123

Привет,
когда я пытаюсь запустить приведенный выше код, он показывает pop для замены или нет.
Пожалуйста, подскажите мне, как удалить pop, и он всегда заменит существующий файл.

Рейтинг:
0

Member 11194584

Я решаю проблему имени столбца здесь, пожалуйста, используйте этот код и получите идеальное решение вашего вопроса.

private void Button1_Click(object sender, EventArgs e)
      {
          try {
          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=Yashodhan-PC;Initial Catalog=SalesManagement;Persist Security Info=True;User ID=sa;Password=sql";
          cnn = new SqlConnection(connectionString);
          cnn.Open();
          sql = "SELECT * FROM SalesOrder";
          SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn);
          DataSet ds = new DataSet();
          dscmd.Fill(ds);

          foreach (DataTable dt in ds.Tables)
          {
              for (int i1 = 0; i1 < dt.Columns.Count; i1++)
              {
                  xlWorkSheet.Cells[1, i1 + 1] = dt.Columns[i1].ColumnName;
              }
          }

          for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
          {
              int s = i + 1;
              for (j = 0; j <= ds.Tables[0].Columns.Count - 1; j++)
              {
                  data = ds.Tables[0].Rows[i].ItemArray[j].ToString();
                  xlWorkSheet.Cells[s + 1, j + 1] = data;
              }
          }

          xlWorkBook.SaveAs("SaleOrder.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:\\User\\UserName\\MyDocuments\\SaleOrder.xls.xls");
          }
          catch (Exception Ex)
          {
              MessageBox.Show("Please Move Your SaleOrder.xls and Retry Again...........");

          }
      }


CHill60

На этот вопрос уже дан ответ, и решение, показывающее, как добавлять имена столбцов, было добавлено несколько месяцев назад!