C#中dataset导出到excel

c#中dataset导出到excel

cn = new adodb.connection
                str = "provider=microsoft.jet.oledb.4.0;data source=" & me.ofdselectexcel.filename & ";extended properties=""excel 8.0;hdr=yes"""
                cn.open(str)
                '获取所有sheet的名称
                cbsheet.properties.items.clear()
                dim rs1 as new adodb.recordset
                rs1 = cn.openschema(adodb.schemaenum.adschematables)
                while not rs1.eof
                    cbsheet.properties.items.add(rs1.fields("table_name").value)
                    rs1.movenext()
                end while
                cn.close()

 

////上面是获取选中excel的sheet名称

出错是因为你的excel的sheet名称被改过了,默认是sheet1$

好了给合上面我们来看个完整的dataset导出到excel代码。

/// <summary>
/// 将datatable的数据导出到excel中。
/// </summary>
/// <param name="dt">datatable</param>
/// <param name="xlsfiledir">导出的excel文件存放目录(绝对路径,最后带“”)</param>
/// <param name="namelist">datatable中列名的中文对应表</param>
/// <param name="strtitle">excel表的标题</param>
/// <returns>excel文件名</returns>
public static string exportdatatoexcel(system.data.datatable dt, string xlsfiledir, hashtable namelist, string strtitle)
{
    if (dt == null) return "";

    microsoft.office.interop.excel.applicationclass excel = new microsoft.office.interop.excel.applicationclass();
    microsoft.office.interop.excel.workbooks workbooks = excel.workbooks;
    microsoft.office.interop.excel.workbook workbook = workbooks.add(microsoft.office.interop.excel.xlwbatemplate.xlwbatworksheet);
    microsoft.office.interop.excel.worksheet worksheet = (microsoft.office.interop.excel.worksheet)workbook.worksheets[1];

    int titlerowscount = 0;
    if (strtitle != null && strtitle.trim() != "")
    {
        titlerowscount = 1;
        excel.get_range(excel.cells[1, 1], excel.cells[1, dt.columns.count]).font.bold = true;
        excel.get_range(excel.cells[1, 1], excel.cells[1, dt.columns.count]).font.size = 16;
        excel.get_range(excel.cells[1, 1], excel.cells[1, dt.columns.count]).mergecells = true;
        worksheet.cells[1, 1] = strtitle;
    }
    if (!system.io.directory.exists(xlsfiledir))
    {
        system.io.directory.createdirectory(xlsfiledir);
    }
    string strfilename = datetime.now.tostring("yyyymmddhhmmssff") + ".xls";

    string tempcolumnname = "";

    for (int i = 0; i < dt.rows.count; i++)
    {
        for (int j = 0; j < dt.columns.count; j++)
        {
            if (i == 0)
            {
                tempcolumnname = dt.columns[j].columnname.trim();
                if (namelist != null)
                {
                    idictionaryenumerator enum = namelist.getenumerator();
                    while (enum.movenext())
                    {
                        if (enum.key.tostring().trim() == tempcolumnname)
                        {
                            tempcolumnname = enum.value.tostring();
                        }
                    }
                }
                worksheet.cells[titlerowscount + 1, j + 1] = tempcolumnname;
            }
            worksheet.cells[i + titlerowscount + 2, j + 1] = dt.rows[i][j].tostring();
        }
    }
    excel.get_range(excel.cells[titlerowscount + 1, 1], excel.cells[titlerowscount + 1, dt.columns.count]).font.bold = true;
    excel.get_range(excel.cells[1, 1], excel.cells[titlerowscount + 1 + dt.rows.count, dt.columns.count]).horizontalalignment = xlvalign.xlvaligncenter;
    excel.get_range(excel.cells[1, 1], excel.cells[titlerowscount + 1 + dt.rows.count, dt.columns.count]).entirecolumn.autofit();

    workbook.saved = true;
    workbook.savecopyas(xlsfiledir + strfilename);
    system.runtime.interops教程ervices.marshal.releasecomobject(worksheet);
    worksheet = null;
    system.runtime.interopservices.marshal.releasecomobject(workbook);
    workbook = null;
    workbooks.close();
    system.runtime.interopservices.marshal.releasecomobject(workbooks);
    workbooks = null;
    excel.quit();
    system.runtime.interopservices.marshal.releasecomobject(excel);
    excel = null;
    return strfilename;
}

时间: 2024-10-27 18:25:46

C#中dataset导出到excel的相关文章

Dataset导出到Excel,马上显示问题

问题描述 我想用officecom组件把Dataset导出到Excel并立即自动把此Excel显示出来,但用process.Start()不能显示,没有任何反应,但把显示部分代码放入另外一个button中,点击此button确能显示.这是为啥? 解决方案 解决方案二:没人知道?解决方案三:网上有很多例子,gridview导出到excel文件你把dataset的数据绑定到gridview控件上,然后再导出到excel文件只要几行代码就可以解决的protectedvoidButton1_Click(

datagridview-C#的dategridview中数据导出到excel的问题

问题描述 C#的dategridview中数据导出到excel的问题 public bool ExportDataGridview(DataGridView gridView, bool isShowExcle) { if (gridView.Rows.Count == 0) { MessageBox.Show("请您检查是否有数据导出","提示",MessageBoxButtons.OK,MessageBoxIcon.Information); return fa

如何用jquery 将 datagrid中数据导出到excel?

问题描述 如何用jquery 将 datagrid中数据导出到excel? 需要用到些什么插件?有例子更好 谢谢 解决方案 一个插件,将jquery数据生成excel的xml内容的字符串.下面是插件代码 <script> /** Jquery easyui datagrid js导出excel 修改自extgrid导出excel * allows for downloading of grid data (store) directly into excel * Method: extract

C#WinForm中dataGridView导出为Excel的问题,20分~~~~~~~~在线等~~~~

问题描述 数据库表:s_names_ages_citys_sexs_money张三20漯河男1000李四25郑州女800王五30安阳男900赵六26驻马店男300这些数据会显示在datagridview中,导出为Excel的时候Excel里显示成这样:姓名年龄安阳漯河驻马店郑州性别张三201000男李四25800女王五30900男赵六26300男 解决方案 解决方案二:你要的excel的样子好奇葩啊解决方案三:如果你能把下面的需求显示到DataGridView中,你都知道怎么导出了.数据结构是"

Asp.net中DataTable导出到Excel的方法介绍_实用技巧

复制代码 代码如下: #region  DataTable导出到Excel        /// <summary>        /// DataTable导出到Excel        /// </summary>        /// <param name="pData">DataTable</param>        /// <param name="pFileName">导出文件名</p

Grid或者DataTable中数据导出为Excel原来这么简单_实用技巧

以前一直认为,将Grid 或者DataTable中的数据导出到Excel功能实现会非常复杂,可能会想用什么类库什么的或者实在太难就用csv算了. 看了FineUI中的将Grid导出为Excel的实现方法,实际上是可以非常简单.看来很难的问题,变换一种思路就可以非常简单. 1. Aspx后台代码输出Content Type信息 复制代码 代码如下: Response.ClearContent(); Response.AddHeader("content-disposition", &qu

asp.net C#中ListView中数据导出到Excel实例

具体代码  代码如下 复制代码 private void 导出数据_Click(object sender, EventArgs e) { ExportToExecl(); } /// <summary> /// 执行导出数据 /// </summary> public void ExportToExecl() { System.Windows.Forms.SaveFileDialog sfd = new SaveFileDialog(); sfd.DefaultExt = &qu

ASP.NET用DataSet导出到Excel的方法_实用技巧

复制代码 代码如下:  /读取临时文件    GYYW.DA.Common.Base_SqlDataBase daBZDM = new GYYW.DA.Common.Base_SqlDataBase();    DataSet dsBZDM = daBZDM.GetDataSetBySql("select QCDM,MC,GG from WG_BZDM where QCDM like '02%'");    //同时将虚拟目录下的Data作为临时文件目录.    string urlP

mysql中数据导出成excel文件语句

 代码如下 复制代码 mysql>select * from xi_table into outfile 'd:test.xls'; 导出为txt文件:  代码如下 复制代码 select * from xi_table into outfile 'd:test.txt'; 默认使用tab分割字段,记录使用n分割.可以自定义三个参数.  代码如下 复制代码 SELECT * FROMhx_9enjoy INTO OUTFILE '/tmp/9enjoy_hx.txt' FIELDS TERMIN