代码

protected void exportToExcelClient(IDictionary<string, string> map)
{
if (map.Count == 0)
{
MessageBox.Show("请选择要导出的字段!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
pgbClient.Value = 0;
_excel = new Excel.Application();
Excel.Workbook wbook = _excel.Workbooks.Add(Missing.Value);
Excel.Worksheet wsheet = (Excel.Worksheet)_excel.ActiveSheet;
Excel.Range range = (Excel.Range)wsheet.Cells;
Excel.Range ran = null;
string tofilepath = Application.StartupPath + "\\Excel_save\\";
string tofilename = "customer.xls";
string sql = "SELECT ";
ArrayList keyArr = new ArrayList();
foreach(KeyValuePair<string,string> entry in map)
{
sql+=entry.Value+",";
keyArr.Add(entry.Key);
}
sql = sql.Substring(0, sql.Length - 1);
sql += " FROM tb_ClientInfo WHERE 1=1"+condition;
//MessageBox.Show(sql);
DataSet myds = boperate.getds(sql, "tb_Client");
DataTable dt = myds.Tables["tb_Client"];
for (int i = 0; i < keyArr.Count; i++)
{
ran = (Excel.Range)range[1, i + 1];
ran.Font.Bold = true;
ran.Font.Size = 10;
ran.Value2 = keyArr[i];
//ran.Columns.AutoFit();
NAR(ran);
pgbClient.Step = 10/keyArr.Count;
pgbClient.Value += 10 / keyArr.Count;
}
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
ran = (Excel.Range)range[i + 2, j + 1];
ran.Value2 = dt.Rows[i][j];
ran.Font.Size = 10;
ran.Columns.AutoFit();
NAR(ran);
}
pgbClient.Step = 90 / dt.Rows.Count;
pgbClient.Value += 90 / dt.Rows.Count;
}
if (!Directory.Exists(tofilepath))
{
Directory.CreateDirectory(tofilepath);
}
if (File.Exists(tofilepath + tofilename))
{
File.Delete(tofilepath + tofilename);
}
wbook.SaveAs(tofilepath + tofilename, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
wbook.Close(false, Type.Missing, Type.Missing);
NAR(range);
NAR(wsheet);
_excel.Quit();
NAR(_excel);
pgbClient.Value = pgbClient.Maximum;
System.Threading.Thread.Sleep(500);
System.Diagnostics.Process.Start("EXCEL.EXE",tofilepath+tofilename);

//this.Close();
}
/// <summary>
/// 释放资源
/// </summary>
/// <param name="o"></param>
private void NAR(object o)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(o);
}
catch { }
finally
{
o = null;
}
}

NAR方法用于释放资源 , exportToExcelClient方法的IDictionary<string, string> map字典结构用于根据用户所选的数据字段来导出到excel。就是这样,C#生成excel挺方便的,C/S , B/S都能用 。

转载于:https://www.cnblogs.com/sparemylife/archive/2010/06/19/1760719.html

C# 调用Excel组件生成excel文件相关推荐

  1. 使用Aspose.Cells组件生成Excel文件实例

     这篇文章主要介绍了使用Aspose.Cells组件生成Excel文件的方法,大家参考使用吧 生成带表头的Excel文件,格式如下显示. 当然更复杂的一些也可以通过 合并单元格的方法 public ...

  2. 如何通过excel批量生成word文件?

    如何通过excel批量生成word文件?不知道大家有没有面对过批量生成word文件的工作经历,相信有很多小伙伴都遇到过,一个excel表格里实事先准备好了很多文件名称,然后一次性通过这些文件名称生成对 ...

  3. 将大量有规律txt文本数据转换成xml格式,在导入excel,生成excel文件,在导入spass中,对数据进行分析

    [文本数据 2.txt]下面是其中两条 Title-题名: 供应链竞争力内涵与模型构建研究 Author-作者: 余晖;张文杰; Organ-单位: 北京交通大学经济管理学院; Source-文献来源 ...

  4. python excel模板 生成excel表格_python使用xlwt生成Excel表格

    在工作中,遇到了使用python生成Excel表格的需求,经过资料的查找与对比,决定使用第三方库xlwt来生成Excel表格,现做如下总结: 简单例子: import xlwt wb = xlwt.W ...

  5. 【工具集】【后端】【EasyExcel】动态Excel模版生成Excel

    1.需求描述 将数据动态保存到Excel中,其中数据包含文本文字.图片base64的格式 Excel中支持sheet之间的跳转.字体颜色的控制 sheet数量不固定,需要动态创建sheet模板 2.实 ...

  6. [python爬虫] 招聘信息定时系统 (二).调用pyinstaller包生成exe文件

    前面一篇文章主要讲述,如何通过Python爬取招聘信息,且爬取的日期为前一天的,同时将爬取的内容保存到数据库中:这篇文章主要讲述如何将python文件压缩成exe可执行文件,供后面的操作.       ...

  7. 『PHP』phar文件详解_phar文件格式_调用phar类方法生成phar文件

    phar简介 phar,全称为PHP Archive,phar扩展提供了一种将整个PHP应用程序放入.phar文件中的方法,以方便移动.安装..phar文件的最大特点是将几个文件组合成一个文件的便捷方 ...

  8. 使用Aspose.Cells组件生成Excel文件列宽度自适应时出错:Column width must be between 0 and 255...

    错误提示:Column width must be between 0 and 255 出错处: /// <summary>                   /// 设置表页的列宽度自 ...

  9. python excel模板 生成excel表格_python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图...

    python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 #coding=utf-8 from openpyxl importload_workbookfro ...

最新文章

  1. VTK修炼之道76:交互部件_标注类Widget的应用
  2. 使用Log4j为项目配置日志输出应用详细总结及示例演示.
  3. 包容网关 Inclusive Gateway
  4. 在C#中对列表/数组进行碎片整理——关闭所有空白
  5. uc3842改可调电源教程_《学习笔记》--DC/DC电源电路设计实例
  6. [Luogu] P4626 一道水题 II
  7. python中怎样划分时间段_如何划分重叠的日期时间间隔(组织模式时钟时间)?...
  8. redis的hset hget mset mget是什么
  9. 信号指示RSSI与显示格数关系
  10. 史上最纯净的Win7专业版系统
  11. java 实现linux进度条,Linux实现的进度条一(基本知识学习和简单功能)
  12. 只用js代码实现电子时钟,精确到毫秒
  13. 计算机1500字论文,当我打开电脑_1500字
  14. 局域网IP地址查看软件V2.0使用教程 Python办公自动化
  15. 全球100位人工智能名人和2500名资深AI人士,将聚首深圳
  16. Java与C语言链表的不同
  17. 武汉微软认证考点及考试流程 与 微软认证考试流程
  18. 初中数学503个必考知识点_初中数学:21个必考知识点+重难点!打印背熟,3年不下130+!...
  19. Oracle Goldengate 12c打pus补丁
  20. 免费是王道!盘点国外八大知名杀毒软件产品

热门文章

  1. java xml 画表格_用js+xml自动生成表格的东西
  2. 变焦什么意思_变焦镜头中的恒定光圈与浮动光圈是什么意思?萌新摄影分享指南!...
  3. mysql慢查询call_慢查询日志 - Azure Database for MySQL | Microsoft Docs
  4. 卡耐基梅隆大学计算机工程录取率,热点:卡内基梅隆大学爆出2020年新生数据,计算机学院录取率堪比藤校...
  5. mysql分表全局查询_mysql如何查询多样同样的表/sql分表查询、java项目日志表分表的开发思路/按月分表...
  6. 测试色谱柱柱效的软件,高效液相色谱柱柱效测定
  7. mysql 正则截取字符串_mysql字符串查找截取与正则表达式的联合应用 | 学步园
  8. Spring Security HttpSecurity.formLogin
  9. MySQL Spatial Analysis Functions(空间计算方法)
  10. pandas.Series.asfreq