从Grid导出到Excel [英] Export to excel from Grid

查看:235
本文介绍了从Grid导出到Excel的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,



我使用以下代码将数据导出到Excel。



< pre lang =c#> table.RenderControl(htw);

// 将htmlwriter呈现为响应
响应。写( < html xmlns:x = \urn:schemas-microsoft-com:office:excel \ > 中);
Response.Write( < head>);
Response.Write( < meta http-equiv = \Content-Type \content = \ text / html的;字符集=窗口-1252\ >中);
Response.Write( <! - [if gte mso 9]>);
Response.Write( < xml>);
Response.Write( < x:ExcelWorkbook>);
Response.Write( < x:ExcelWorksheets>);
Response.Write( < x:ExcelWorksheet>);
// 此行命名工作表
Response.Write( < x:名称>应用程序详细信息< / x:名称>);
Response.Write( < x:WorksheetOptions>);
// 这两行是神奇的工作
Response.Write( < x:Panes>);
Response.Write( < / x:Panes>);
Response.Write( < / x:WorksheetOptions>);
Response.Write( < / x:ExcelWorksheet>);
// -------------------- -------------------
Response.Write( < X:ExcelWorksheet>中);
// 此行命名工作表
Response.Write( < x:名称>服务器详细信息< / x:名称>);
Response.Write( < x:WorksheetOptions>);
// 这两行是神奇的工作
Response.Write( < x:Panes>);
Response.Write( < / x:Panes>);
Response.Write( < / x:WorksheetOptions>);
Response.Write( < / x:ExcelWorksheet>);
// -------------------- ------------------------
Response.Write( < / x:ExcelWorksheets>);
Response.Write( < / x:ExcelWorkbook>);
Response.Write( < / xml>);
Response.Write( <![endif] - >);
Response.Write( < / head>);
Response.Write( < body>);
HttpContext.Current.Response.Write(sw.ToString());
Response.Write( < / body>);
Response.Write( < / html>);


Response.End();

HttpContext.Current.Response.End();





这将两张表格添加到Excel中并添加数据进入第一张表格即申请详情

我无法将数据添加到第二张表格中,即服务器详细信息。



请帮忙如果可以的话。



谢谢

解决方案

你可以使用下面的代码......



  private   void  button1_Click_1( object  sender,EventArgs e)
{

// 创建Excel应用程序
Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application();


// 在Excel应用程序中创建新的WorkBook
Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);


// 在工作簿中创建新的Excel表格
Microsoft.Office.Interop.Excel._Worksheet worksheet = null ;

// 查看该计划背后的Excel工作表
app .Visible = true ;

// 获取第一张表的参考。默认情况下,其名称为Sheet1。
// 存储其对工作表的引用
worksheet = workbook.Sheets [ Sheet1];
worksheet = workbook.ActiveSheet;

// 更改活动工作表的名称
工作表。 Name = 从gridview导出;


// 在Excel中存储标题部分
for int i = 1 ; i< datagridview1.columns.count + 1; i ++)>
{
worksheet.Cells [ 1 ,i] = dataGridView1.Columns [i-1] .HeaderText;
}



// 存储每一行和列值到Excel工作表
用于 int i = 0 ; i < dataGridView1.Rows.Count-1; i ++)
{
< span class =code-keyword> for ( int j = 0 ; j< datagridview1.columns.count; j ++)>
{
worksheet.Cells [i + 2 ,j + 1 ] = dataGridView1.Rows [i] .Cells [j] .Value.ToString();
}
}


// 保存应用程序
workbook.SaveAs( c:\\output.xls,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive,Type.Missing,Type.Missing,Type.Missing,Type.Missing );

// 退出应用程序
app.Quit( );
}


注意部分代码从<获取数据 DataGridView并填充单元格。

// 将每行和每列值存储到excel表
for int i = 0 ; i < dataGridView1.Rows.Count-1; i ++)
{
for int j = 0 ; j< datagridview1.columns.count; j ++)>
{
worksheet.Cells [i + 2 ,j + 1 ] = dataGridView1.Rows [i] .Cells [j] .Value.ToString();
}
}









我已经采用了dataGridView1.Rows.Count-1,因为在datagridview中它最后包含空行。 (参见datagridview图。)


Hello everyone,

I am using following code to export data to excel.

table.RenderControl(htw);

//  render the htmlwriter into the response
Response.Write("<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">");
Response.Write("<head>");
Response.Write("<meta http-equiv=\"Content-Type\" content=\"text/html;charset=windows-1252\">");
Response.Write("<!--[if gte mso 9]>");
Response.Write("<xml>");
Response.Write("<x:ExcelWorkbook>");
Response.Write("<x:ExcelWorksheets>");
Response.Write("<x:ExcelWorksheet>");
//this line names the worksheet
Response.Write("<x:Name>Application Details</x:Name>");
Response.Write("<x:WorksheetOptions>");
//these 2 lines are what works the magic
Response.Write("<x:Panes>");
Response.Write("</x:Panes>");
Response.Write("</x:WorksheetOptions>");
Response.Write("</x:ExcelWorksheet>");
// ---------------------------------------
Response.Write("<x:ExcelWorksheet>");
//this line names the worksheet
Response.Write("<x:Name>Server Details </x:Name>");
Response.Write("<x:WorksheetOptions>");
//these 2 lines are what works the magic
Response.Write("<x:Panes>");
Response.Write("</x:Panes>");
Response.Write("</x:WorksheetOptions>");
Response.Write("</x:ExcelWorksheet>");
//--------------------------------------------
Response.Write("</x:ExcelWorksheets>");
Response.Write("</x:ExcelWorkbook>");
Response.Write("</xml>");
Response.Write("<![endif]-->");
Response.Write("</head>");
Response.Write("<body>");
HttpContext.Current.Response.Write(sw.ToString());
Response.Write("</body>");
Response.Write("</html>");


Response.End();

HttpContext.Current.Response.End();



This adds two sheets into excel and add data into first sheet i.e "Application Details"
I am not able to add data into 2nd sheet i.e "Server Details".

Please help if you can.

Thanks

解决方案

You Can use Belowing code.....

private void button1_Click_1(object sender, EventArgs e)
        {
 
            // creating Excel Application
            Microsoft.Office.Interop.Excel._Application app  = new Microsoft.Office.Interop.Excel.Application();
 
 
            // creating new WorkBook within Excel application
            Microsoft.Office.Interop.Excel._Workbook workbook =  app.Workbooks.Add(Type.Missing);
           
 
            // creating new Excelsheet in workbook
             Microsoft.Office.Interop.Excel._Worksheet worksheet = null;                   
           
           // see the excel sheet behind the program
            app.Visible = true;
          
           // get the reference of first sheet. By default its name is Sheet1.
           // store its reference to worksheet
            worksheet = workbook.Sheets["Sheet1"];
            worksheet = workbook.ActiveSheet;
 
            // changing the name of active sheet
            worksheet.Name = "Exported from gridview";
 
           
            // storing header part in Excel
            for(int i=1;i<datagridview1.columns.count+1;i++)>
            {
    worksheet.Cells[1, i] = dataGridView1.Columns[i-1].HeaderText;
            }
 
 
 
            // storing Each row and column value to excel sheet
            for (int i=0; i < dataGridView1.Rows.Count-1 ; i++)
            {
                for(int j=0;j<datagridview1.columns.count;j++)>
                {
                    worksheet.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString();
                }
            }
 
 
            // save the application
            workbook.SaveAs("c:\\output.xls",Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive , Type.Missing, Type.Missing, Type.Missing, Type.Missing);
           
            // Exit from the application
          app.Quit();
        }
 
   
Note this part of code gets data from DataGridView and fills cells.

            // storing Each row and column value to excel sheet
            for (int i=0; i < dataGridView1.Rows.Count-1 ; i++)
            {
                for(int j=0;j<datagridview1.columns.count;j++)>
                {
                    worksheet.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString();
                }
            }





I have taken dataGridView1.Rows.Count-1, because in datagridview it contains empty row at the last. (See in the figure of datagridview.)


这篇关于从Grid导出到Excel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆