.Net平台下的第三方Excel类库对比
来源:互联网 发布:淘宝助理下载订单不全 编辑:程序博客网 时间:2024/05/18 22:17
最近的一个项目中需要在DataTable和Excel之间做相互转换,Excel需是真正的xls,而不是CVS或者TVS或HTML写法的xls。考虑到运行程序的机子上不一定专有Office,就没有用Excel程序,否则的话,装个程序还得装个office,那就又得考虑版权了,太麻烦了。一共使用了三个不同免费的Library,分别是myXls、Koogra和NPOI。 三个的处理速度都非常的快,对比使用后发现这三者的功能并不一样: myXls 这是一个免费开源的library,侧重于Excel的输出。可以设置到单个Cell,但读取功能很弱。 Koogra与myXls恰恰相反,是一个非常好用Excel读取类库,可是在测试过程中发现Koogra读不了myXls输出的XLS文件!不知道是不是自己没搞清两个类库的原因,总之觉得有点遗憾。 NPOI是.Net平台下的POI,目前稳定版是一个能够生成真正的Excel文件并实现读写的开源项目,项目地址是http://npoi.codeplex.com/。功能有输入输出,公式运算,单元格的高级样式等等,其中包含的类库有: NPOI.Util 1.2.1 Basic assistant class library 如果正好要做EXCEL的输入输出,不妨考虑一下使用哪一个Library。
NPOI.POIFS 1.2.1 OLE2 format read/write library
NPOI.DDF 1.2.1 Drawing format read/write library
NPOI.SS 1.2.1 Formula evaluation library
NPOI.HPSF 1.2.1 Summary Information and Document Summary Information read/write library
NPOI.HSSF 1.2.1 Excel BIFF format read/write library001
using
System;
002
using
System.Collections.Generic;
003
using
System.Linq;
004
using
System.Text;
005
using
System.IO;
006
using
System.Data;
007
//引用
008
using
NPOI.HSSF.UserModel;
009
using
NPOI.HPSF;
010
using
NPOI.POIFS.FileSystem;
011
012
namespace
OracleKity
013
{
014
class
DataTableExcel
015
{
016
public
bool
DataTableToExcel(System.Data.DataTable dtSource,
string
filePath)
017
{
018
try
019
{
020
//文档仅写入一个sheet
021
//建立一个workbook
022
HSSFWorkbook workbook =
new
HSSFWorkbook();
023
System.Data.DataTable dt = dtSource;
024
//建立sheet
025
HSSFSheet sheet = workbook.CreateSheet(
"sheet1"
);
026
//为避免日期格式被Excel自动替换,所以设定 format 为 『@』 表示一率当成text來看
027
HSSFCellStyle textStyle = workbook.CreateCellStyle();
028
textStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat(
"@"
);
029
030
//用column name 作为列名
031
List<
string
> columns =
new
List<
string
>();
032
for
(
int
colIndex = 0; colIndex < dt.Columns.Count; colIndex++)
033
{
034
string
name = dt.Columns[colIndex].ColumnName;
035
HSSFCell cell = sheet.CreateRow(0).CreateCell(colIndex);
036
cell.SetCellValue(name);
037
cell.CellStyle = textStyle;
038
columns.Add(name);
039
}
040
041
//建立内容列
042
for
(
int
row = 0; row < dt.Rows.Count; row++)
043
{
044
DataRow dr = dt.Rows[row];
045
for
(
int
col = 0; col < columns.Count; col++)
046
{
047
string
data = dr[columns[col]].ToString();
048
HSSFCell cell = sheet.CreateRow(row + 1).CreateCell(col);
049
cell.SetCellValue(data);
050
cell.CellStyle = textStyle;
051
}
052
}
053
//写Excel
054
FileStream file =
new
FileStream(filePath, FileMode.OpenOrCreate);
055
workbook.Write(file);
056
file.Close();
057
return
true
;
058
}
059
catch
060
{
061
return
false
;
062
}
063
}
064
public
System.Data.DataTable ReadExcelToDataTable(
string
filePath)
065
{
066
//打开要读取的Excel
067
FileStream file =
new
FileStream(filePath, FileMode.Open);
068
//读入Excel
069
HSSFWorkbook workbook =
new
HSSFWorkbook(file);
070
file.Close();
071
HSSFSheet sheet = workbook.GetSheetAt(0);
072
//建立一个新的table
073
DataTable dtNew =
new
DataTable(); ;
074
HSSFRow row = sheet.GetRow(0);
075
//读取取第0列作为column name
076
for
(
int
columnIndex = 0; columnIndex < row.LastCellNum; columnIndex++)
077
{
078
DataColumn dc =
new
DataColumn(row.GetCell(columnIndex).ToString());
079
dtNew.Columns.Add(dc);
080
}
081
int
rowId = 1;
082
//第一列以后为资料,一直读到最后一行
083
while
(rowId <= sheet.LastRowNum)
084
{
085
DataRow newRow = dtNew.NewRow();
086
//读取所有column
087
for
(
int
colIndex = 0; colIndex < dtNew.Columns.Count; colIndex++)
088
{
089
newRow[dtNew.Columns[colIndex]] = sheet.GetRow(rowId).GetCell(colIndex).ToString();
090
}
091
dtNew.Rows.Add(newRow);
092
rowId++;
093
}
094
return
dtNew;
095
096
}
097
098
}
099
}
100
</
string
></
string
>
- .Net平台下的第三方Excel类库对比
- 第三方支付平台对比
- python处理excel的第三方库
- MS .NET平台下的Excel编程
- Android平台下JNI调用第三方so库
- Android平台下JNI调用第三方so库
- Android平台下JNI调用第三方so库
- Android平台下JNI调用第三方so库
- Win7平台下ML第三方库whl配置
- .net NPOI 第三方Excel操作
- 第三方库 -> 网络组件 -> AFNetworking 和 ASIHTTPRequest 的对比
- 第三方库操作excel
- 第三方支付平台:BeeCloud和Ping++对比
- 收集的库或框架或第三方平台
- .net平台和java平台的对比
- 第三方支付平台的状态表
- php不用第三方类导出excel
- 第三方平台移植
- Teamcenter 开发利器组合介绍。 Eclipse + Visual Studio
- POJ 1016
- java core1 —— 笔记1!!!
- .htaccess 404错误配置问题
- 无法连接到WMI提供程序。你没有权限或者该服务器无法访问。请注意你只能使用SQL SERVER 配置管理器来管理sql server 2005服务器
- .Net平台下的第三方Excel类库对比
- 关于php上传的临时文件的问题
- 十年学会编程---聆听前辈的声音
- Servlet Session机制详解
- MYSQL中关于insert语句速度的优化
- 串口编程,在win7上调用PurgeComm清输入缓存区时异常
- Erlang User Conference 2010见闻(兼谈程序员职业生涯)
- Erlang User Conference 2010见闻(兼谈程序员职业生涯)
- 基于fibonacci数列的几种编程语言的运算速度比较