博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NPOI
阅读量:4604 次
发布时间:2019-06-09

本文共 2683 字,大约阅读时间需要 8 分钟。

 

//读excel数据到data中

public static DataTable ReadXlsxData(Stream fileStream, string sheetName)

{
try
{
XSSFWorkbook hssfworkbook = new XSSFWorkbook(fileStream);
var sheet = hssfworkbook.GetSheet(sheetName);
IEnumerator rows = sheet.GetRowEnumerator();
DataTable dataTable = new DataTable(sheetName);
while (rows.MoveNext())
{
if (dataTable.Columns.Count == 0)
{
IRow row = (XSSFRow)rows.Current;
int y = 0;
while (true)
{
ICell cell = row.GetCell(y++);
if ((cell == null) || (string.IsNullOrEmpty(cell.ToString())))
{
break;
}
dataTable.Columns.Add(cell.ToString());
}
}
else
{
IRow row = (XSSFRow)rows.Current;
DataRow dr = dataTable.NewRow();
for (int i = 0; i < dataTable.Columns.Count; i++)
{
ICell cell = row.GetCell(i);
if (cell == null)
{
dr[i] = null;
}
else
{
dr[i] = cell.ToString();
}
}
dataTable.Rows.Add(dr);
}
}
return dataTable;
}
catch
{
throw;

}

}

 

//导出excel

public void Export()

{
MemoryStream ms = RateDTToMS(dt);

string fileName = commonContext.GetExcelName(ExcelName);

if (Request.Browser.Browser == "IE")
fileName = HttpUtility.UrlEncode(fileName);
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment;fileName=" + fileName);
Response.BinaryWrite(ms.ToArray());
Response.End();
}

 

/// <summary>

/// datatable 转换成MemoryStream
/// </summary>
/// <param name="source">datatable</param>
/// <returns>MemoryStream</returns>
public MemoryStream RateDTToMS(DataTable source)
{
MemoryStream memoryStream = new MemoryStream();

IWorkbook workbook = new XSSFWorkbook();

ISheet sheet = workbook.CreateSheet();
IRow headerRow = sheet.CreateRow(0);

int indexDeptName = 0;

int indexModule = 1;
int indexCatType = 2;
int indexOwner = 3;
int indexJobName = 4;
int indexJobCnName = 5;
int indexJobCount = 6;
int indexAllCount = 7;
int indexRate = 8;

// handling header.

headerRow.CreateCell(indexDeptName).SetCellValue("归属部门");
headerRow.CreateCell(indexModule).SetCellValue("归属模块");
headerRow.CreateCell(indexCatType).SetCellValue("归属功能");
headerRow.CreateCell(indexOwner).SetCellValue("负责人");
headerRow.CreateCell(indexRate).SetCellValue("占比(%)");
// handling value.
int rowIndex = 1;
foreach (DataRow dr in source.Rows)
{
IRow dataRow = sheet.CreateRow(rowIndex);
dataRow.CreateCell(indexDeptName).SetCellValue(dr["DepartmentName"].ToString());
dataRow.CreateCell(indexModule).SetCellValue(dr["ModuleName"].ToString());
dataRow.CreateCell(indexCatType).SetCellValue(dr["CattypeName"].ToString());
dataRow.CreateCell(indexOwner).SetCellValue(dr["FJCOwner"].ToString());
dataRow.CreateCell(indexRate).SetCellValue(rate);
rowIndex++;
}
workbook.Write(memoryStream);
memoryStream.Flush();
return memoryStream;
}

转载于:https://www.cnblogs.com/maomaokuaile/p/4309112.html

你可能感兴趣的文章
Hdu 1203 I NEED A OFFER!
查看>>
php文件上传类
查看>>
CF219D Choosing Capital for Treeland
查看>>
luogu P3809 【模板】后缀排序
查看>>
JVM 调优工具
查看>>
SCTF 2014 pwn题目分析
查看>>
集合以及特殊集合
查看>>
USACO 2.2 Runaround Numbers
查看>>
Matlab画图-非常具体,非常全面
查看>>
365. Water and Jug Problem
查看>>
SQL数据库数据检索top和distinct
查看>>
平衡搜索树--红黑树 RBTree
查看>>
sqlite驱动下载
查看>>
让IE6/IE7/IE8浏览器支持CSS3属性
查看>>
队列实现霍夫曼树
查看>>
【Java】图片高质量缩放类
查看>>
详解定位与定位应用
查看>>
【前端开发】 5分钟创建 Mock Server
查看>>
java 从键盘录入的三种方法
查看>>
使用jQuery和YQL,以Ajax方式加载外部内容
查看>>