以下代码中最关键的代码是

                    Worksheet mSheet = (Microsoft.Office.Interop.Excel.Worksheet)mBook.Worksheets.Add(miss, miss, 1, Microsoft.Office.Interop.Excel.XlSheetType.xlWorksheet);

网上很资料中都没有提到,我也是试了很久才搞出来的,上面这一行是新建了2个Sheet,想建多个就修改Add的第3个参数,数量为参数值+1

xlapp.Visible = false; //是否显示导出过程 ,建议关闭,否则在导出过程中鼠标点击Excel文件时会出错。

  

引用:COM --》 Microsoft Office xx.x Object Library   再引用 Microsoft.Office.Interop.Excel (可以到网上搜索或以下地址下载:http://files.cnblogs.com/fan0136/Microsoft.Office.Interop.Excel.rar

完整的代码台下,实际使用中数据表参数可以修改成List<object>:

 public class ToExcel
{
/// <summary>
/// 可以自定义导出Excel的格式,传的参数为GridView
/// </summary>
/// <param name="gridView"></param>
/// <param name="filename"></param>
public static void ExportGridViewToExcel(DevExpress.XtraGrid.Views.Grid.GridView gridView, DevExpress.XtraGrid.Views.Grid.GridView gridView1, string filename)
{
//System.Data.DataTable dt = (System.Data.DataTable)gridView.DataSource; SaveFileDialog sfd = new SaveFileDialog();
filename += DateTime.Now.ToString("yyyyMMdd") + "-" + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString();
sfd.FileName = filename;
sfd.Filter = "Excel files (*xls) | *.xls";
sfd.RestoreDirectory = true; if (sfd.ShowDialog() == DialogResult.OK && sfd.FileName.Trim() != null)
{
int rowIndex = 1;
int rowIndex1 = 1;
int colIndex = 0;
int colNum = gridView.Columns.Count;
System.Reflection.Missing miss = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Excel.Application xlapp = new Microsoft.Office.Interop.Excel.Application();
xlapp.Visible = true;
Microsoft.Office.Interop.Excel.Workbooks mBooks = (Microsoft.Office.Interop.Excel.Workbooks)xlapp.Workbooks;
Microsoft.Office.Interop.Excel.Workbook mBook = (Microsoft.Office.Interop.Excel.Workbook)mBooks.Add(miss);
Worksheet mSheet = (Microsoft.Office.Interop.Excel.Worksheet)mBook.Worksheets.Add(miss, miss, 1, Microsoft.Office.Interop.Excel.XlSheetType.xlWorksheet);
Worksheet sm = mBook.Worksheets[1];
sm.Name = "q";
Worksheet ws = mBook.Worksheets[2];
ws.Name = "B"; //设置对齐方式
mSheet.Cells.HorizontalAlignment = XlHAlign.xlHAlignCenter;
//设置文字自动换行
//mSheet.Cells.WrapText = true;
//设置第一行高度,即标题栏
((Microsoft.Office.Interop.Excel.Range)mSheet.Rows["1:1", System.Type.Missing]).RowHeight = 20; //设置数据行行高度
((Microsoft.Office.Interop.Excel.Range)mSheet.Rows["2:" + gridView.RowCount + 1, System.Type.Missing]).RowHeight = 16; //设置字体大小(10号字体)
mSheet.Range[mSheet.Cells[1, 1], mSheet.Cells[gridView.RowCount + 1, gridView.Columns.Count]].Font.Size = 10; //设置单元格边框
Microsoft.Office.Interop.Excel.Range range1 = mSheet.Range[mSheet.Cells[1, 1], mSheet.Cells[gridView.RowCount + 1, gridView.Columns.Count]];
range1.Borders.LineStyle = 1; //写标题
for (int row = 1; row <= gridView.Columns.Count; row++)
{
sm.Cells[1, row] = gridView.Columns[row - 1].GetTextCaption();
} //写标题
for (int row = 1; row <= gridView1.Columns.Count; row++)
{ ws.Cells[1, row] = gridView1.Columns[row - 1].GetTextCaption();
}
try
{
for (int i = 0; i < gridView.RowCount; i++)
{
rowIndex++;
colIndex = 0;
for (int j = 0; j < gridView.Columns.Count; j++)
{
colIndex++;
sm.Cells[rowIndex, colIndex] = gridView.GetRowCellValue(i, gridView.Columns[j]);
}
}
for (int i = 0; i < gridView1.RowCount; i++)
{
rowIndex1++;
colIndex = 0;
for (int j = 0; j < gridView1.Columns.Count; j++)
{
colIndex++;
ws.Cells[rowIndex1, colIndex] = gridView1.GetRowCellValue(i, gridView1.Columns[j]);
}
} mBook.SaveAs(sfd.FileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel7, miss, miss, miss, miss, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,
miss, miss, miss, miss, miss);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
} finally
{
mBooks.Close();
xlapp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(mSheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(mBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(mBooks);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlapp);
GC.Collect();
}
}
else
{
//return false;
}
}
}

  源码下载地址:http://download.csdn.net/detail/jn40105/7124495

C# 导出Excel 多个Sheet的更多相关文章

  1. CRM 报表导出excel时指定sheet名

    如图所示,设置PageName即可: 这样导出excel时,sheet的名就有了:

  2. 项目笔记:导出Excel功能分sheet页插入数据

    导出Excel功能分sheet页处理数据: /*导出EXCEL*/ public void createExcel() { log.info("导出Excel功能已经启动-BEGIN&quo ...

  3. vue 导出excel 多个sheet

    npm install -save xlsx //下载依赖包 import Vue from 'vue'; import XLSX from 'xlsx'; /** * 导出数据报表xlsx文件 * ...

  4. 使用POI做的一个生成Excel的工具类。包含了导出Excel和解析Excel方法

    PoiExcelUtils.java /** * */ package com.common.office; import java.io.File; import java.io.FileInput ...

  5. poi 和jxl导出excel(2)

    controller: /** * 导出报表 * @return */ @RequestMapping(value = "/export") @ResponseBody publi ...

  6. 使用POI导出EXCEL工具类并解决导出数据量大的问题

    POI导出工具类 工作中常常会遇到一些图表需要导出的功能,在这里自己写了一个工具类方便以后使用(使用POI实现). 项目依赖 <dependency> <groupId>org ...

  7. 使用JAVA导出EXCEL表格(POI)

    一.POI概述 Jakarta POI 是一套用于访问微软格式文档的Java API.POI提供API给Java程序对Microsoft Office格式档案读和写的功能.在许多企业办公系统中,经常会 ...

  8. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续3篇-导出时动态生成多Sheet EXCEL)

    ExcelUtility 类库经过我(梦在旅途)近期不断的优化与新增功能,现已基本趋向稳定,功能上也基本可以满足绝大部份的EXCEL导出需求,该类库已在我们公司大型ERP系统全面使用,效果不错,今天应 ...

  9. 根据模板导出Excel报表并生成多个Sheet页

    因为最近用报表导出比较多,所有就提成了一个工具类,本工具类使用的场景为  根据提供的模板来导出Excel报表 并且可根据提供的模板Sheet页进行复制 从而实现多个Sheet页的需求, 使用本工具类时 ...

随机推荐

  1. C# Interface显式实现和隐式实现

    c#中对接口的实现方式有两种:隐式实现和显式实现,之前一直没仔细看过,今天查了些资料,在这里整理一下. 隐式实现的例子 interface IChinese { string Speak(); } p ...

  2. JAVA--聊天界面面板

    package windows.beautify; import java.awt.BorderLayout; import java.awt.Color; import java.awt.event ...

  3. VS 的winform中生成release模式

    我试过,直接在项目的"Properties"中,修改"Build"标签的"Configuration"还不行.因为之前将不常用的工具栏隐藏了 ...

  4. ORACLE的order by中文排序

    在使用order by排序的时候,出现如下情况:   印象中中文排序应该默认是按照拼音排序的,为何"鑫"会排在"中"的后面呢?猜想order by是不是根据对应 ...

  5. windows server 2003 AD

    本文转载:http://www.cnblogs.com/zfanlong1314/admin/EditPosts.aspx?opt=1 今天教大家用windows server2003系统建立Acti ...

  6. 多线程、多任务管理 简单demo

    需求:假设多个任务需要执行,每个任务不是一时半会能完成(需要能看到中间执行状况): 多个任务 根据条件不同 可能需要不同的处理 分析: 多线程并发执行多任务: 对任务进行管理,追踪中间执行状态: 运用 ...

  7. CentOS 7 之安装篇

    程序员是一个学到老的行业,因为新换一个公司,感觉也轻松了好多,自己想想还是多学一些知识吧,中国政府都要强制以每年15%的比例使用国产系统,相信Linux还是有必要学习的.因为曾经在文思做Expedia ...

  8. asp.net运行机制图

    (郑重提示:此图版权归广州传智播客老邹所有啊!!!!) 详细版

  9. Android网络框架比较

    今天,公司需要为一个安卓app选择一个合适的网络框架,具体我了解,主要的安卓网络框架有okhttp,retrofit,android-async-http,volley. 查找网上的资料,大致可以得到 ...

  10. pyqt5消息框QMessageBox

    QMessageBox消息框有以下几种类型: QMessageBox.information 信息框   QMessageBox.question 问答框   QMessageBox.warning ...