第一种、Aspose.Cells.dll

  1. //如果需要饶过office Excel那么就看我最后的实现方法吧~!
  2.  
  3. //我最后的实现是使用的第三方Aspose.Cells.dll
  4.  
  5. //具了解这个dll一直免费,(第三方有风险,使用需谨慎)
  6.  
  7. //创建excel
  8. Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook();
  9. Aspose.Cells.Worksheet sheet = workbook.Worksheets[0];
  10. sheet.FreezePanes(1, 1, 1, 0);//冻结第一行
  11.  
  12. #region 第一行
  13. sheet.Cells["A1"].PutValue("登录名(loginID)");
  14. sheet.Cells["B1"].PutValue("密码(passWord)");
  15. sheet.Cells["C1"].PutValue("姓(familyName)");
  16. sheet.Cells["D1"].PutValue("名(firstName)");
  17. sheet.Cells["E1"].PutValue("性别(gender)");
  18. sheet.Cells["F1"].PutValue("出生时间(dateofBirth)");
  19. sheet.Cells["G1"].PutValue("手机号(cellphoneNum)");
  20. sheet.Cells["H1"].PutValue("身份证号(identityID)");
  21. sheet.Cells["I1"].PutValue("就职状态(jobStatus)");
  22. sheet.Cells["J1"].PutValue("公司电话(telephoneNum)");
  23. sheet.Cells["K1"].PutValue("邮箱(email)");
  24. sheet.Cells["L1"].PutValue("祖籍(nativeHome)");
  25. sheet.Cells["M1"].PutValue("毕业学校(graduateSchool)");
  26. sheet.Cells["N1"].PutValue("专业(major)");
  27. sheet.Cells["O1"].PutValue("毕业时间(graduateTime)");
  28. sheet.Cells["P1"].PutValue("学历(education)");
  29. sheet.Cells["Q1"].PutValue("邮编(zipCode)");
  30. sheet.Cells["R1"].PutValue("地址(address)");
  31. sheet.Cells["S1"].PutValue("入职时间(entryTime)");
  32. sheet.Cells["T1"].PutValue("离开时间(leaveTime)");
  33. sheet.Cells["U1"].PutValue("备注(remarks)");
  34. sheet.Cells["V1"].PutValue("部门(departmentID)");
  35. sheet.Cells["W1"].PutValue("职位(JobTypeID");
  36. #endregion
  37.  
  38. #region 循环写入内容
  39. int count = 1;
  40. foreach (EmployeeInfo_tbl item in enterpriseInfo.Employees)
  41. {
  42. count = count + 1;
  43. sheet.Cells["A" + count].PutValue(item.loginID);
  44. sheet.Cells["B" + count].PutValue(item.passWord);
  45. sheet.Cells["C" + count].PutValue(item.familyName);//"姓(familyName)";
  46. sheet.Cells["D" + count].PutValue(item.firstName); //"名(firstName)";
  47. sheet.Cells["E" + count].PutValue(item.gender == 0 ? "女" : "男"); //"性别(gender)";
  48. sheet.Cells["F" + count].PutValue(item.dateofBirth.ToString() == "" ? null : item.dateofBirth.ToString()); //"出生时间(dateofBirth)";
  49. sheet.Cells["G" + count].PutValue(item.cellphoneNum.ToString());//"手机号(cellphoneNum)";
  50. sheet.Cells["H" + count].PutValue(item.identityID);//"身份证号(identityID)";
  51. sheet.Cells["I" + count].PutValue(item.jobStatus == 1 ? "在职" : "离职");//"就职状态(jobStatus)";
  52. sheet.Cells["J" + count].PutValue(item.telephoneNum);//"公司电话(telephoneNum)";
  53. sheet.Cells["K" + count].PutValue(item.email);//"邮箱(email)";
  54. sheet.Cells["L" + count].PutValue(item.nativeHome);//"祖籍(nativeHome)";
  55. sheet.Cells["M" + count].PutValue(item.graduateSchool);// "毕业学校(graduateSchool)";
  56. sheet.Cells["N" + count].PutValue(item.major);// "专业(major)";
  57. sheet.Cells["O" + count].PutValue(item.graduateTime.ToString() == "" ? null : item.graduateTime.ToString());//"毕业时间(graduateTime)";
  58. string ed = "";
  59. switch (item.education)
  60. {
  61. case 1:
  62. ed = "初中/小学";
  63. break;
  64. case 2:
  65. ed = "高中/中专";
  66. break;
  67. case 3:
  68. ed = "本科/专科";
  69. break;
  70. case 4:
  71. ed = "研究生以上";
  72. break;
  73. default:
  74. ed = null;
  75. break;
  76. }
  77. sheet.Cells["P" + count].PutValue(ed);// "学历(education)";
  78. sheet.Cells["Q" + count].PutValue(item.zipCode);// "邮编(zipCode)";
  79. sheet.Cells["R" + count].PutValue(item.address);//"地址(address)";
  80. sheet.Cells["S" + count].PutValue(item.entryTime.ToString() == "" ? null : item.entryTime.ToString());//"入职时间(entryTime)";
  81. sheet.Cells["T" + count].PutValue(item.leaveTime.ToString() == "" ? null : item.leaveTime.ToString());// "离开时间(leaveTime)";
  82. sheet.Cells["U" + count].PutValue(item.remarks);// "备注(remarks)";
  83. sheet.Cells["V" + count].PutValue(item.Department.departmentName);// "部门(departmentID)";
  84. sheet.Cells["W" + count].PutValue(item.JobType.jobName);// "职位(JobTypeID";
  85. }
  86. #endregion
  87.  
  88. //保存
  89. workbook.Save(_FolderBrowserDialog.SelectedPath + @"\test.xls");
  90.   大致如此~!

第二种、NPOI

http://npoi.codeplex.com/

NPOI无需Office COM组件且不依赖Office,使用NPOI能够帮助开发者在没有安装微软Office的情况下读写Office 97-2003的文件,支持的文件格式包括xls, doc, ppt等。NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作。

被人称为操作EXCEL的终极方案,例子如下:

  1. //引用
  2. using NPOI.HSSF.UserModel;
  3. using NPOI.HPSF;
  4. using NPOI.POIFS.FileSystem;
  5. using NPOI.SS.UserModel;
  6. //将WorkBook指到我们原本设计好的Templete Book1.xls
  7. using (IWorkbook wb = new HSSFWorkbook(new FileStream("D:/Book1.xls", FileMode.Open)))
  8. {
  9. try
  10. {
  11. //设定要使用的Sheet为第0个Sheet
  12. ISheet TempSheet = wb.GetSheetAt(0);
  13. int StartRow = 4;
  1. //tDS为Query回来的资料
  2. DataSet tDS = new DataSet();
  1. for (int i = 0; i < tDS.Tables[0].Rows.Count; i++)
  2. {
  3. //第一个Row要用Create的
  4. TempSheet.CreateRow(StartRow + i).CreateCell(0).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][0]));
  5. //第二个Row之后直接用Get的
  6. TempSheet.GetRow(StartRow + i).CreateCell(1).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][1]));
  7. TempSheet.GetRow(StartRow + i).CreateCell(2).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][2]));
  8. TempSheet.GetRow(StartRow + i).CreateCell(3).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][3]));
  9. TempSheet.GetRow(StartRow + i).CreateCell(4).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][4]));
  10. TempSheet.GetRow(StartRow + i).CreateCell(5).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][5]));
  11. TempSheet.GetRow(StartRow + i).CreateCell(6).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][6]));
  12. TempSheet.GetRow(StartRow + i).CreateCell(7).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][7]));
  13. TempSheet.GetRow(StartRow + i).CreateCell(8).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][8]));
  14. TempSheet.GetRow(StartRow + i).CreateCell(9).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][9]));
  15. TempSheet.GetRow(StartRow + i).CreateCell(10).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][10]));
  16. TempSheet.GetRow(StartRow + i).CreateCell(11).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][11]));
  17. TempSheet.GetRow(StartRow + i).CreateCell(12).SetCellValue(Convert.ToString(tDS.Tables[0].Rows[i][12]));
  18. }
  19. //将文档写到指定位置
  20. using (FileStream file = new FileStream("H:/Test_NPOI4.xls", FileMode.Create))
  21. {
  22. wb.Write(file);
  23. file.Close();
  24. file.Dispose();
  25. }
  26. }
  27. catch (Exception e)
  28. {
  29. string a = e.ToString();
  30. }
  31. }

C# 创建Excel或需不安装Office的更多相关文章

  1. 在没安装OFFICE的服务器SSIS中进行EXCEL的ETL操作!

    由于OFFICE 2010的安装包比较庞大,如果仅仅为了在服务器中实现操作EXCEL,完全没有必要安装整个OFFICE,是否可以不装OFFICE也实现与OFFICE文件的互相操作呢?答案是肯定的,在S ...

  2. ASP.NET导出Excel(利用NPOI和EPPlus库,无需安装Office)

    网上提供了很多Asp.net中操作Excel的方法,其中大部分是调用微软的Office组件,下面提供三个无须安装Office即可从Asp.net输出Excel的方法. 1 简单方法 //下面代码输出的 ...

  3. C#中导出EXCEL服务器端不用安装OFFICE

    在实际开发过程中,有时候服务器端没安装OFFICE,你和服务器管理员去商量安装个OFFICE的时候,管理员很倔犟的不给你安装的时候,这个时候就可以考虑我这个方法是实现导出EXCEL了.如果你导出的EX ...

  4. VSTO之旅系列(二):创建Excel解决方案

    原文:VSTO之旅系列(二):创建Excel解决方案 本专题概要 引言 创建VSTO项目 Excel对象模型 创建Excel外接程序 创建Excel文档级自定义项 小结 一.引言 也许很多朋友都没有听 ...

  5. Excel催化剂开源第4波-ClickOnce部署要点之导入数字证书及创建EXCEL信任文件夹

    Excel催化刘插件使用Clickonce的部署方式发布插件,以满足用户使用插件过程中,需要对插件进行功能升级时,可以无痛地自动更新推送新版本.但Clickonce部署,对用户环境有较大的要求,前期首 ...

  6. C# 如何创建Excel多级分组

    在Excel中如果能够将具有多级明细的数据进行分组显示,可以清晰地展示数据表格的整体结构,使整个文档具有一定层次感.根据需要设置显示或者隐藏分类数据下的详细信息,在便于数据查看.管理的同时也使文档更具 ...

  7. laravel5.5 excel扩展包的安装和使用

    (文章引用来源 http://www.cnblogs.com/djwhome/p/9322112.html   有自己的补充用于记录) (在此次项目中,本人亲自尝试,标题中文无论如何转换(GBK.gb ...

  8. [.NET开发] C# 如何创建Excel多级分组

    要设置显示或者隐藏分类数据下的详细信息,在便于数据查看.管理的同时也使文档更具美观性.那么,在C#中如何来创建Excel数据的多级分组显示呢?下面将进行详细阐述.方法中使用了免费版组件Free Spi ...

  9. Visual Studio 进行Excel相关开发,Microsoft.Office.Interop.Excel.dll库

    1. Interop.Excel.dll 的查找 本文中将 Microsoft.Office.Interop.Excel.dll库简称为Interop.Excel.dll库 其实在使用Visual S ...

随机推荐

  1. 『Python基础-1 』 编程语言Python的基础背景知识

    #『Python基础-1 』 编程语言Python的基础背景知识 目录: 1.编程语言 1.1 什么是编程语言 1.2 编程语言的种类 1.3 常见的编程语言 1.4 编译型语言和解释型语言的对比 2 ...

  2. BugkuWeb本地包含

    知识点:$_REQUEST不是一个函数,它是一个超全局变量,里面包括有$_GET $_POST $_COOKIE的值,$_REPUEST 是接收了 $_GET $_POST $_COOKIE 三个的集 ...

  3. GDB 单步调试汇编

    本文同时发表在 https://github.com/zhangyachen/zhangyachen.github.io/issues/134 之前在看汇编的时候一直是肉眼看GCC -S的结果,缺点是 ...

  4. HCA数据下载

    HCA data downloads HCA data downloads PeRl` 还记得去年看的时候还是什么都没有,今年已经有数据可以下载了.

  5. MongoDB入门---文档查询操作之条件查询&and查询&or查询

    经过前几天的学习之路,今天终于到了重头戏了.那就是文档查询操作.话不多说哈,直接看下语法: db.collection.find(query, projection) query :可选,使用查询操作 ...

  6. 用label实现横向瀑布流的方法

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXcAAAKxCAIAAAAn+3udAAAKqWlDQ1BJQ0MgUHJvZmlsZQAASImVlg

  7. [Python3.X]python 实现斐波那契数列

    斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一 ...

  8. androd hook acitivity 启动流程,替换启动的activity(Android Instrumentation)

    前言:如果程序想要知道有activity启动,如果想要拦截activity,然后跳转到指定的activity怎么办? 我们看下ActivityThread 里面: private Activity p ...

  9. spring-boot、spring-data-jpa、hibernate整合

    一.Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. ...

  10. WeTest功能优化第3期:业内首创,有声音的云真机

    第3期功能优化目录 [云真机远程调试]音频同步传输实现测试有声 [兼容性测试报告]新增视频助力动态定位问题 [云真机远程调试]菜单栏优化助力机型选择 本期介绍的新功能,秉承创造用户需求的理念,在云真机 ...