最新更新请访问: http://denghejun.github.io

  1.  

Aspose.Cells读取Excel非常方便,以下是一个简单的实现读取和导出Excel的操作类:

以下是Aspose.Cells下载地址:http://pan.baidu.com/s/1sjQ5XX7

  1. /// <summary>
  2. /// Excel操作类(引用程序集Aspose.Cells.dll)
  3. /// </summary>
  4. public class ExcelOperation
  5. {
  6. /// <summary>
  7. /// 读取指定路径的Excel文件为DataTable
  8. /// </summary>
  9. /// <param name="fileName">文件全路径</param>
  10. /// <param name="firstRow">要开始读取的第一行在Excel中的行索引(默认会以此行各列数据作为DataTable的列名)</param>
  11. /// <param name="firstColumn">要开始读取的第一列在Excel中的列索引</param>
  12. /// <param name="invalidEndRowNumber">文件尾部无效行数目(该部分所有行数据将不会被读取)</param>
  13. /// <returns>返回DataTable</returns>
  14. public static DataTable ReadExcel(string fileName, int firstRow, int firstColumn, int invalidEndRowNumber)
  15. {
  16. Cells cells;
  17. Workbook workbook = new Workbook(fileName);
  18. cells = workbook.Worksheets[].Cells;
  19. if (cells == null)
  20. {
  21. return null;
  22. }
  23.  
  24. DataTable dt = cells.ExportDataTable(firstRow, firstColumn, cells.MaxDataRow - invalidEndRowNumber, cells.MaxDataColumn);
  25. string realColumnName = string.Empty;
  26. for (int i = ; i < dt.Columns.Count; i++)
  27. {
  28. if (dt.Rows[][i] == null || dt.Rows[][i].ToString().Trim() == string.Empty)
  29. {
  30. realColumnName += dt.Rows[][i];
  31. dt.Columns[i].ColumnName = realColumnName.Replace(" ", string.Empty);
  32. realColumnName = realColumnName.TrimEnd(dt.Rows[][i].ToString().ToCharArray()).Replace(" ", string.Empty);
  33. }
  34. else
  35. {
  36. realColumnName = dt.Rows[][i].ToString();
  37. if ((i + ) <= cells.MaxColumn - && (dt.Rows[][i + ] == null || dt.Rows[][i + ].ToString().Trim() == string.Empty))
  38. {
  39. realColumnName += dt.Rows[][i].ToString();
  40. dt.Columns[i].ColumnName = realColumnName.Replace(" ", string.Empty);
  41. realColumnName = realColumnName.Remove(realColumnName.Length - dt.Rows[][i].ToString().Length - , dt.Rows[][i].ToString().Length).Replace(" ", string.Empty);
  42. }
  43. else
  44. {
  45. dt.Columns[i].ColumnName = realColumnName.Replace(" ", string.Empty);
  46. }
  47. }
  48. }
  49.  
  50. return dt;
  51. }
  52.  
  53. /// <summary>
  54. /// 将DataTable导出指定路径的Excel文件
  55. /// </summary>
  56. /// <param name="dt">DataTable</param>
  57. /// <param name="tableName">Excel文件的表头内容</param>
  58. /// <param name="path">文件保存的全路径</param>
  59. public static void ExportExcel(DataTable dt, string headerText, string path)
  60. {
  61. Workbook workbook = new Workbook(); //工作簿
  62. Worksheet sheet = workbook.Worksheets[]; //工作表
  63. Cells cells = sheet.Cells;//单元格
  64.  
  65. //为标题设置样式
  66. Style styleTitle = workbook.Styles[workbook.Styles.Add()];//新增样式
  67. styleTitle.HorizontalAlignment = TextAlignmentType.Center;//文字居中
  68. styleTitle.Font.Name = "宋体";//文字字体
  69. styleTitle.Font.Size = ;//文字大小
  70. styleTitle.Font.IsBold = true;//粗体
  71.  
  72. //样式2
  73. Style style2 = workbook.Styles[workbook.Styles.Add()];//新增样式
  74. style2.HorizontalAlignment = TextAlignmentType.Center;//文字居中
  75. style2.Font.Name = "宋体";//文字字体
  76. style2.Font.Size = ;//文字大小
  77. style2.Font.IsBold = true;//粗体
  78. style2.IsTextWrapped = true;//单元格内容自动换行
  79. style2.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin;
  80. style2.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin;
  81. style2.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin;
  82. style2.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin;
  83.  
  84. //样式3
  85. Style style3 = workbook.Styles[workbook.Styles.Add()];//新增样式
  86. style3.HorizontalAlignment = TextAlignmentType.Center;//文字居中
  87. style3.Font.Name = "宋体";//文字字体
  88. style3.Font.Size = ;//文字大小
  89. style3.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin;
  90. style3.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin;
  91. style3.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin;
  92. style3.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin;
  93.  
  94. int Colnum = dt.Columns.Count;//表格列数
  95. int Rownum = dt.Rows.Count;//表格行数
  96.  
  97. //生成行1 标题行
  98. cells.Merge(, , , Colnum);//合并单元格
  99. cells[, ].PutValue(headerText);//填写内容
  100. cells[, ].SetStyle(styleTitle);
  101. cells.SetRowHeight(, );
  102.  
  103. //生成行2 列名行
  104. for (int i = ; i < Colnum; i++)
  105. {
  106. cells[, i].PutValue(dt.Columns[i].ColumnName);
  107. cells[, i].SetStyle(style2);
  108. cells.SetRowHeight(, );
  109. }
  110.  
  111. //生成数据行
  112. for (int i = ; i < Rownum; i++)
  113. {
  114. for (int k = ; k < Colnum; k++)
  115. {
  116. cells[ + i, k].PutValue(dt.Rows[i][k].ToString());
  117. cells[ + i, k].SetStyle(style3);
  118. }
  119. cells.SetRowHeight( + i, );
  120. }
  121.  
  122. workbook.Save(path);
  123. }
  124. }

使用Aspose.Cells读取Excel的更多相关文章

  1. 怎么使用Aspose.Cells读取excel 转化为Datatable

    说明:vs2012 asp.net mvc4 c# 使用Aspose.Cells 读取Excel 转化为Datatable 1.HTML前端代码 <%@ Page Language=" ...

  2. Aspose.cells 读取Excel表中的图片问题

    一.说明 本文主要是讲解,怎么使用aspose.cells读取Excel表中的图片,并把图片转换成流或是image对象. 二.开发环境说明 开发工具vs2012,c#语言, 三.Aspose.cell ...

  3. 【转】Aspose.Cells读取excel文件

    Aspose是一个很强大的控件,可以用来操作word,excel,ppt等文件,用这个控件来导入.导出数据非常方便.其中Aspose.Cells就是用来操作Excel的,功能有很多.我所用的是最基本的 ...

  4. Aspose.Cells 读取Excel数据到DataTable

    C#代码: Workbook workbook = new Workbook(); workbook.Open(excelfile); Cells cells = workbook.Worksheet ...

  5. Aspose.Cells导出Excel(1)

    利用Aspose.Cells导出excel 注意的问题 1.DataTable的处理 2.进行编码,便于中文名文件下载 3.别忘了Aspose.Cells.dll(可以自己在网上搜索) public ...

  6. 报表中的Excel操作之Aspose.Cells(Excel模板)

    原文:报表中的Excel操作之Aspose.Cells(Excel模板) 本篇中将简单记录下Aspose.Cells这个强大的Excel操作组件.这个组件的强大之处,就不多说,对于我们的报表总是会有导 ...

  7. 怎么利用Aspose.Cells 获取excel 数据表中sheet的名称

    说明:开发环境 vs2012 asp.net mvc4 c# 利用Aspose.Cells 获取Excel数据表的sheet的名称,并把获取的名称赋值给easyUI 的combobox 1.运行效果 ...

  8. Aspose.Cells 读取受保护的Excel

    最近遇到一个需求,要能够读取受密码保护的Excel内容,之前都是直接读取Excel中的数据,不需要做任何其他的处理.   当Excel双击的时候,需要输入密码,在使用Aspose.Cells 组件读取 ...

  9. EpPlus读取生成Excel帮助类+读取csv帮助类+Aspose.Cells生成Excel帮助类

    大部分功能逻辑都在,少量自定义异常类和扩展方法 ,可用类似代码自己替换 //EpPlus读取生成Excel帮助类+读取csv帮助类,epplus只支持开放的Excel文件格式:xlsx,不支持 xls ...

随机推荐

  1. PHPCMS v9 安全防范教程

    一.目录权限设置很重要:可以有效防范黑客上传木马文件.如果通过 chmod 644 * -R 的话,php文件就没有权限访问了.如果通过chmod 755 * -R 的话,php文件的权限就高了. 所 ...

  2. 给DOM生成的元素添加事件

    问题:通过js给页面添加新元素,并给该元素添加绑定事件,但新添加的元素上却没有绑定任何事件. 常见例子:在处理表格的时候,每行行末有个删除按钮,如下图.点击删除按钮的时候删除这一行. //html部分 ...

  3. 【DWR系列06】- DWR日志及js压缩

    img { border: solid 1px } 一.日志 DWR依赖 Apache Commons Logging,可以使用log4j实现日志记录功能. 1.1 日志简介 和其他日志框架一样,当设 ...

  4. Linux 使用Crontab设置定时调用Shell文件

    定时执行步骤: 利用crontab来定时执行任务大致有如下两步: 1.编写shell脚本 2.利用crontab加入到定时任务队列 一.如何建立shell脚本 程序必须以下面的行开始(必须方在文件的第 ...

  5. 关于Charles抓取手机访问的Https请求

    准备工作 本次测试的Charles版本为3.9.1 · 首先在Charles中开启HTTP请求的远程监听. · 然后分别在手机和Mac上安装Charles的证书. 注意:证书一定要一致,否则抓取不到. ...

  6. DataFrame格式化

    1.如果是格式化成Json的話直接 val rdd = df.toJSON.rdd 2.如果要指定格式需要自定义函数如下: //格式化具体字段条目 def formatItem(p:(StructFi ...

  7. JS—事件对象

    在触发DOM上的某个事件时,会产生一个事件对象event.这个对象中包含着所有与事件有关的信息.包括导致事件的元素,事件的类型以及其他与特定事件相关的信息. 举例鼠标操作导致的事件对象中,会包含鼠标位 ...

  8. BZOJ 3110 [Zjoi2013]K大数查询 ——整体二分

    [题目分析] 整体二分显而易见. 自己YY了一下用树状数组区间修改,区间查询的操作. 又因为一个字母调了一下午. 貌似树状数组并不需要清空,可以用一个指针来维护,可以少一个log 懒得写了. [代码] ...

  9. Redis为什么使用单进程单线程方式也这么快

    [转] http://www.syyong.com/db/Redis-why-the-use-of-single-process-and-single-threaded-way-so-fast.htm ...

  10. MVC中RenderBody的工作原理

    A)什么是RenderBody  根据MSDN的解释(http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US& ...