使用Aspose.Cells读取Excel
最新更新请访问: http://denghejun.github.io
Aspose.Cells读取Excel非常方便,以下是一个简单的实现读取和导出Excel的操作类:
以下是Aspose.Cells下载地址:http://pan.baidu.com/s/1sjQ5XX7
- /// <summary>
- /// Excel操作类(引用程序集Aspose.Cells.dll)
- /// </summary>
- public class ExcelOperation
- {
- /// <summary>
- /// 读取指定路径的Excel文件为DataTable
- /// </summary>
- /// <param name="fileName">文件全路径</param>
- /// <param name="firstRow">要开始读取的第一行在Excel中的行索引(默认会以此行各列数据作为DataTable的列名)</param>
- /// <param name="firstColumn">要开始读取的第一列在Excel中的列索引</param>
- /// <param name="invalidEndRowNumber">文件尾部无效行数目(该部分所有行数据将不会被读取)</param>
- /// <returns>返回DataTable</returns>
- public static DataTable ReadExcel(string fileName, int firstRow, int firstColumn, int invalidEndRowNumber)
- {
- Cells cells;
- Workbook workbook = new Workbook(fileName);
- cells = workbook.Worksheets[].Cells;
- if (cells == null)
- {
- return null;
- }
- DataTable dt = cells.ExportDataTable(firstRow, firstColumn, cells.MaxDataRow - invalidEndRowNumber, cells.MaxDataColumn);
- string realColumnName = string.Empty;
- for (int i = ; i < dt.Columns.Count; i++)
- {
- if (dt.Rows[][i] == null || dt.Rows[][i].ToString().Trim() == string.Empty)
- {
- realColumnName += dt.Rows[][i];
- dt.Columns[i].ColumnName = realColumnName.Replace(" ", string.Empty);
- realColumnName = realColumnName.TrimEnd(dt.Rows[][i].ToString().ToCharArray()).Replace(" ", string.Empty);
- }
- else
- {
- realColumnName = dt.Rows[][i].ToString();
- if ((i + ) <= cells.MaxColumn - && (dt.Rows[][i + ] == null || dt.Rows[][i + ].ToString().Trim() == string.Empty))
- {
- realColumnName += dt.Rows[][i].ToString();
- dt.Columns[i].ColumnName = realColumnName.Replace(" ", string.Empty);
- realColumnName = realColumnName.Remove(realColumnName.Length - dt.Rows[][i].ToString().Length - , dt.Rows[][i].ToString().Length).Replace(" ", string.Empty);
- }
- else
- {
- dt.Columns[i].ColumnName = realColumnName.Replace(" ", string.Empty);
- }
- }
- }
- return dt;
- }
- /// <summary>
- /// 将DataTable导出指定路径的Excel文件
- /// </summary>
- /// <param name="dt">DataTable</param>
- /// <param name="tableName">Excel文件的表头内容</param>
- /// <param name="path">文件保存的全路径</param>
- public static void ExportExcel(DataTable dt, string headerText, string path)
- {
- Workbook workbook = new Workbook(); //工作簿
- Worksheet sheet = workbook.Worksheets[]; //工作表
- Cells cells = sheet.Cells;//单元格
- //为标题设置样式
- Style styleTitle = workbook.Styles[workbook.Styles.Add()];//新增样式
- styleTitle.HorizontalAlignment = TextAlignmentType.Center;//文字居中
- styleTitle.Font.Name = "宋体";//文字字体
- styleTitle.Font.Size = ;//文字大小
- styleTitle.Font.IsBold = true;//粗体
- //样式2
- Style style2 = workbook.Styles[workbook.Styles.Add()];//新增样式
- style2.HorizontalAlignment = TextAlignmentType.Center;//文字居中
- style2.Font.Name = "宋体";//文字字体
- style2.Font.Size = ;//文字大小
- style2.Font.IsBold = true;//粗体
- style2.IsTextWrapped = true;//单元格内容自动换行
- style2.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin;
- style2.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin;
- style2.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin;
- style2.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin;
- //样式3
- Style style3 = workbook.Styles[workbook.Styles.Add()];//新增样式
- style3.HorizontalAlignment = TextAlignmentType.Center;//文字居中
- style3.Font.Name = "宋体";//文字字体
- style3.Font.Size = ;//文字大小
- style3.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin;
- style3.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin;
- style3.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin;
- style3.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin;
- int Colnum = dt.Columns.Count;//表格列数
- int Rownum = dt.Rows.Count;//表格行数
- //生成行1 标题行
- cells.Merge(, , , Colnum);//合并单元格
- cells[, ].PutValue(headerText);//填写内容
- cells[, ].SetStyle(styleTitle);
- cells.SetRowHeight(, );
- //生成行2 列名行
- for (int i = ; i < Colnum; i++)
- {
- cells[, i].PutValue(dt.Columns[i].ColumnName);
- cells[, i].SetStyle(style2);
- cells.SetRowHeight(, );
- }
- //生成数据行
- for (int i = ; i < Rownum; i++)
- {
- for (int k = ; k < Colnum; k++)
- {
- cells[ + i, k].PutValue(dt.Rows[i][k].ToString());
- cells[ + i, k].SetStyle(style3);
- }
- cells.SetRowHeight( + i, );
- }
- workbook.Save(path);
- }
- }
使用Aspose.Cells读取Excel的更多相关文章
- 怎么使用Aspose.Cells读取excel 转化为Datatable
说明:vs2012 asp.net mvc4 c# 使用Aspose.Cells 读取Excel 转化为Datatable 1.HTML前端代码 <%@ Page Language=" ...
- Aspose.cells 读取Excel表中的图片问题
一.说明 本文主要是讲解,怎么使用aspose.cells读取Excel表中的图片,并把图片转换成流或是image对象. 二.开发环境说明 开发工具vs2012,c#语言, 三.Aspose.cell ...
- 【转】Aspose.Cells读取excel文件
Aspose是一个很强大的控件,可以用来操作word,excel,ppt等文件,用这个控件来导入.导出数据非常方便.其中Aspose.Cells就是用来操作Excel的,功能有很多.我所用的是最基本的 ...
- Aspose.Cells 读取Excel数据到DataTable
C#代码: Workbook workbook = new Workbook(); workbook.Open(excelfile); Cells cells = workbook.Worksheet ...
- Aspose.Cells导出Excel(1)
利用Aspose.Cells导出excel 注意的问题 1.DataTable的处理 2.进行编码,便于中文名文件下载 3.别忘了Aspose.Cells.dll(可以自己在网上搜索) public ...
- 报表中的Excel操作之Aspose.Cells(Excel模板)
原文:报表中的Excel操作之Aspose.Cells(Excel模板) 本篇中将简单记录下Aspose.Cells这个强大的Excel操作组件.这个组件的强大之处,就不多说,对于我们的报表总是会有导 ...
- 怎么利用Aspose.Cells 获取excel 数据表中sheet的名称
说明:开发环境 vs2012 asp.net mvc4 c# 利用Aspose.Cells 获取Excel数据表的sheet的名称,并把获取的名称赋值给easyUI 的combobox 1.运行效果 ...
- Aspose.Cells 读取受保护的Excel
最近遇到一个需求,要能够读取受密码保护的Excel内容,之前都是直接读取Excel中的数据,不需要做任何其他的处理. 当Excel双击的时候,需要输入密码,在使用Aspose.Cells 组件读取 ...
- EpPlus读取生成Excel帮助类+读取csv帮助类+Aspose.Cells生成Excel帮助类
大部分功能逻辑都在,少量自定义异常类和扩展方法 ,可用类似代码自己替换 //EpPlus读取生成Excel帮助类+读取csv帮助类,epplus只支持开放的Excel文件格式:xlsx,不支持 xls ...
随机推荐
- PHPCMS v9 安全防范教程
一.目录权限设置很重要:可以有效防范黑客上传木马文件.如果通过 chmod 644 * -R 的话,php文件就没有权限访问了.如果通过chmod 755 * -R 的话,php文件的权限就高了. 所 ...
- 给DOM生成的元素添加事件
问题:通过js给页面添加新元素,并给该元素添加绑定事件,但新添加的元素上却没有绑定任何事件. 常见例子:在处理表格的时候,每行行末有个删除按钮,如下图.点击删除按钮的时候删除这一行. //html部分 ...
- 【DWR系列06】- DWR日志及js压缩
img { border: solid 1px } 一.日志 DWR依赖 Apache Commons Logging,可以使用log4j实现日志记录功能. 1.1 日志简介 和其他日志框架一样,当设 ...
- Linux 使用Crontab设置定时调用Shell文件
定时执行步骤: 利用crontab来定时执行任务大致有如下两步: 1.编写shell脚本 2.利用crontab加入到定时任务队列 一.如何建立shell脚本 程序必须以下面的行开始(必须方在文件的第 ...
- 关于Charles抓取手机访问的Https请求
准备工作 本次测试的Charles版本为3.9.1 · 首先在Charles中开启HTTP请求的远程监听. · 然后分别在手机和Mac上安装Charles的证书. 注意:证书一定要一致,否则抓取不到. ...
- DataFrame格式化
1.如果是格式化成Json的話直接 val rdd = df.toJSON.rdd 2.如果要指定格式需要自定义函数如下: //格式化具体字段条目 def formatItem(p:(StructFi ...
- JS—事件对象
在触发DOM上的某个事件时,会产生一个事件对象event.这个对象中包含着所有与事件有关的信息.包括导致事件的元素,事件的类型以及其他与特定事件相关的信息. 举例鼠标操作导致的事件对象中,会包含鼠标位 ...
- BZOJ 3110 [Zjoi2013]K大数查询 ——整体二分
[题目分析] 整体二分显而易见. 自己YY了一下用树状数组区间修改,区间查询的操作. 又因为一个字母调了一下午. 貌似树状数组并不需要清空,可以用一个指针来维护,可以少一个log 懒得写了. [代码] ...
- Redis为什么使用单进程单线程方式也这么快
[转] http://www.syyong.com/db/Redis-why-the-use-of-single-process-and-single-threaded-way-so-fast.htm ...
- MVC中RenderBody的工作原理
A)什么是RenderBody 根据MSDN的解释(http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US& ...