本文介绍了是否NPOI必须的.xlsx格式的支持?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
威尔NPOI DLL识别的.xlsx
文件?
目前我使用NPOI 1.2.5版本的DLL为Microsoft Excel 97-2003,但我需要访问扩展Excel表格的.xlsx
也。
NPOI会支持以上?
代码段:
静态无效的主要(字串[] args ){
XSSFWorkbook xssfwb;
使用(的FileStream文件=新的FileStream(
@C:\Users\347702\Desktop\Hello.xlsx,
FileMode.Open,FileAccess的。读)){
xssfwb =新XSSFWorkbook(文件);
}
ISheet表= xssfwb.GetSheet(工作表Sheet1);
sheet.GetRow(1048576);
Console.WriteLine(sheet.GetRow(1048576).GetCell(0).StringCellValue);
}
解决方案
是它。 NPOI 2.0测试版的工作。下面是一个示例代码,让你开始:
类节目
{
静态XSSFWorkbook hssfworkbook;
静态数据集dataSet1的=新的DataSet();
静态无效的主要(字串[] args)
{
InitializeWorkbook(@E:\Docs\HoursWidget_RTM.xlsx);
xlsxToDT();
DisplayData(dataSet1.Tables [0]);
到Console.ReadLine();
}用
静态无效InitializeWorkbook(字符串路径)
{
(的FileStream文件=新的FileStream(路径,FileMode.Open,FileAccess.Read))
{
hssfworkbook =新XSSFWorkbook(文件);
}
}
静态无效xlsxToDT()
{
DataTable的DT =新的DataTable();
ISheet片= hssfworkbook.GetSheetAt(1);
IRow headerRow = sheet.GetRow(0);
IEnumerator的行数= sheet.GetRowEnumerator();
INT colCount = headerRow.LastCellNum;
INT rowCount等= sheet.LastRowNum;
的for(int c = 0;℃下colCount; C ++)
{
dt.Columns.Add(headerRow.GetCell(C)的ToString( ));
}
布尔skipReadingHeaderRow = rows.MoveNext();
,而(rows.MoveNext())
{
IRow行=(XSSFRow)rows.Current;
的DataRow博士= dt.NewRow();
的for(int i = 0; I< colCount;我++)
{
细胞ICELL = row.GetCell(I)
如果(细胞!= NULL)
{
博士[I] = cell.ToString();
}
}
dt.Rows.Add(DR);
}
hssfworkbook = NULL;
表= NULL;
dataSet1.Tables.Add(DT);
}
静态无效DisplayData(DataTable的表)
{
的foreach(DataRow的行table.Rows)
{
的foreach(DataColumn的在table.Columns COL)
{
Console.WriteLine({0} = {1},col.ColumnName,行[COL]);
}
Console.WriteLine(------------------------------------ -------);
}
}
}
Will NPOI DLL recognize .xlsx
file?
Currently I'm using NPOI 1.2.5 version DLL for Microsoft Excel 97-2003, but I need to access Excel sheets of extension .xlsx
also.
Will NPOI support the above?
Code snippet:
static void Main(string[] args) {
XSSFWorkbook xssfwb;
using(FileStream file=new FileStream(
@"C:\Users\347702\Desktop\Hello.xlsx",
FileMode.Open, FileAccess.Read)) {
xssfwb=new XSSFWorkbook(file);
}
ISheet sheet=xssfwb.GetSheet("sheet1");
sheet.GetRow(1048576);
Console.WriteLine(sheet.GetRow(1048576).GetCell(0).StringCellValue);
}
解决方案
Yes it does. NPOI 2.0 beta works. Here's a sample code to get you started:
class Program
{
static XSSFWorkbook hssfworkbook;
static DataSet dataSet1 = new DataSet();
static void Main(string[] args)
{
InitializeWorkbook(@"E:\Docs\HoursWidget_RTM.xlsx");
xlsxToDT();
DisplayData(dataSet1.Tables[0]);
Console.ReadLine();
}
static void InitializeWorkbook(string path)
{
using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
{
hssfworkbook = new XSSFWorkbook(file);
}
}
static void xlsxToDT()
{
DataTable dt = new DataTable();
ISheet sheet = hssfworkbook.GetSheetAt(1);
IRow headerRow = sheet.GetRow(0);
IEnumerator rows = sheet.GetRowEnumerator();
int colCount = headerRow.LastCellNum;
int rowCount = sheet.LastRowNum;
for (int c = 0; c < colCount; c++)
{
dt.Columns.Add(headerRow.GetCell(c).ToString());
}
bool skipReadingHeaderRow = rows.MoveNext();
while (rows.MoveNext())
{
IRow row = (XSSFRow)rows.Current;
DataRow dr = dt.NewRow();
for (int i = 0; i < colCount; i++)
{
ICell cell = row.GetCell(i);
if (cell != null)
{
dr[i] = cell.ToString();
}
}
dt.Rows.Add(dr);
}
hssfworkbook = null;
sheet = null;
dataSet1.Tables.Add(dt);
}
static void DisplayData(DataTable table)
{
foreach (DataRow row in table.Rows)
{
foreach (DataColumn col in table.Columns)
{
Console.WriteLine("{0} = {1}", col.ColumnName, row[col]);
}
Console.WriteLine("-------------------------------------------");
}
}
}
这篇关于是否NPOI必须的.xlsx格式的支持?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!