惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MyScale Blog
MyScale Blog
MongoDB | Blog
MongoDB | Blog
The Register - Security
The Register - Security
T
The Blog of Author Tim Ferriss
A
About on SuperTechFans
Vercel News
Vercel News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Jina AI
Jina AI
Stack Overflow Blog
Stack Overflow Blog
Cisco Talos Blog
Cisco Talos Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
W
WeLiveSecurity
S
Securelist
I
Intezer
F
Full Disclosure
WordPress大学
WordPress大学
腾讯CDC
酷 壳 – CoolShell
酷 壳 – CoolShell
Latest news
Latest news
aimingoo的专栏
aimingoo的专栏
C
Cisco Blogs
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
The Exploit Database - CXSecurity.com
P
Proofpoint News Feed
K
Kaspersky official blog
阮一峰的网络日志
阮一峰的网络日志
P
Proofpoint News Feed
J
Java Code Geeks
人人都是产品经理
人人都是产品经理
雷峰网
雷峰网
AWS News Blog
AWS News Blog
T
Tenable Blog
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
L
LINUX DO - 最新话题
小众软件
小众软件
T
Threat Research - Cisco Blogs
C
Cyber Attacks, Cyber Crime and Cyber Security
The GitHub Blog
The GitHub Blog
爱范儿
爱范儿
N
News and Events Feed by Topic
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
量子位
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Forbes - Security
Forbes - Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
U
Unit 42
O
OpenAI News
V
V2EX
T
Troy Hunt's Blog

博客园 - 痴人说梦

批量清除数据库中被植入的垃圾信息 解决Windows Server2008R2中导入Excel不能使用Jet 4.0 asp.net(C#) 远程获取网页内容代码分享 JavaScript有关的10个怪癖和秘密 js javascript 鼠标控制图片左右滚动带自动翻滚,图片滑动新闻展示 - 痴人说梦 asp.net2.0邮箱发送代码 JS解析,格式化日期 JavaScript 实用脚本,很好,珍藏起来[转贴] WinForms / 23个.NET开源项目 使用js获取QueryString的方法小结 js实现图片高清晰等比缩小 jQuery获取Select选择的Text和 Value(转) - 痴人说梦 - 博客园 IT项目管理工具总结 - 痴人说梦 - 博客园 有关类及类之间,类成员代码执行顺序链接 window.opener 的用法 用js进行url编码后用php反解以及用php实现js的escape功能函数总结 JS得到当前鼠标的位置 JCalendar 日历控件 div定位 鼠标放在按钮上显示层提示 - 痴人说梦 - 博客园
ASP.NET使用NPOI类库导出Excel
痴人说梦 · 2010-08-09 · via 博客园 - 痴人说梦

/*
 * 作者: 牛腩
 * 创建时间: 2010-1-4 15:15:05
 * Email: 164423073@qq.com
 * 说明: 导出EXCEL的类,使用说明见:
http://msdn.microsoft.com/zh-tw/ee818993.aspx
 
*/using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Web;
using NPOI;
using NPOI.HPSF;
using NPOI.HSSF;
using NPOI.HSSF.UserModel;
using NPOI.POIFS;
using NPOI.Util;public class DataTableRenderToExcel
{
    
public static Stream RenderDataTableToExcel(DataTable SourceTable)
    {
        HSSFWorkbook workbook 
= new HSSFWorkbook();
        MemoryStream ms 
= new MemoryStream();
        HSSFSheet sheet 
= workbook.CreateSheet();
        HSSFRow headerRow 
= sheet.CreateRow(0);// handling header.
        foreach (DataColumn column in SourceTable.Columns)
            headerRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName);
// handling value.
        int rowIndex = 1;foreach (DataRow row in SourceTable.Rows)
        {
            HSSFRow dataRow 
= sheet.CreateRow(rowIndex);foreach (DataColumn column in SourceTable.Columns)
            {
                dataRow.CreateCell(column.Ordinal).SetCellValue(row[column].ToString());
            }

            rowIndex

++;
        }

        workbook.Write(ms);
        ms.Flush();
        ms.Position 

= 0;

        sheet 

= null;
        headerRow 
= null;
        workbook 
= null;return ms;
    }
public static void RenderDataTableToExcel(DataTable SourceTable, string FileName)
    {
        MemoryStream ms 
= RenderDataTableToExcel(SourceTable) as MemoryStream;
        FileStream fs 
= new FileStream(FileName, FileMode.Create, FileAccess.Write);
        
byte[] data = ms.ToArray();

        fs.Write(data, 

0, data.Length);
        fs.Flush();
        fs.Close();

        data 

= null;
        ms 
= null;
        fs 
= null;
    }
public static DataTable RenderDataTableFromExcel(Stream ExcelFileStream, string SheetName, int HeaderRowIndex)
    {
        HSSFWorkbook workbook 
= new HSSFWorkbook(ExcelFileStream);
        HSSFSheet sheet 
= workbook.GetSheet(SheetName);

        DataTable table 

= new DataTable();

        HSSFRow headerRow 

= sheet.GetRow(HeaderRowIndex);
        
int cellCount = headerRow.LastCellNum;for (int i = headerRow.FirstCellNum; i < cellCount; i++)
        {
            DataColumn column 
= new DataColumn(headerRow.GetCell(i).StringCellValue);
            table.Columns.Add(column);
        }
int rowCount = sheet.LastRowNum;for (int i = (sheet.FirstRowNum + 1); i < sheet.LastRowNum; i++)
        {
            HSSFRow row 
= sheet.GetRow(i);
            DataRow dataRow 
= table.NewRow();for (int j = row.FirstCellNum; j < cellCount; j++)
                dataRow[j] 
= row.GetCell(j).ToString();
        }

        ExcelFileStream.Close();
        workbook 

= null;
        sheet 
= null;
        
return table;
    }
public static DataTable RenderDataTableFromExcel(Stream ExcelFileStream, int SheetIndex, int HeaderRowIndex)
    {
        HSSFWorkbook workbook 
= new HSSFWorkbook(ExcelFileStream);
        HSSFSheet sheet 
= workbook.GetSheetAt(SheetIndex);

        DataTable table 

= new DataTable();

        HSSFRow headerRow 

= sheet.GetRow(HeaderRowIndex);
        
int cellCount = headerRow.LastCellNum;for (int i = headerRow.FirstCellNum; i < cellCount; i++)
        {
            DataColumn column 
= new DataColumn(headerRow.GetCell(i).StringCellValue);
            table.Columns.Add(column);
        }
int rowCount = sheet.LastRowNum;for (int i = (sheet.FirstRowNum + 1); i < sheet.LastRowNum; i++)
        {
            HSSFRow row 
= sheet.GetRow(i);
            DataRow dataRow 
= table.NewRow();for (int j = row.FirstCellNum; j < cellCount; j++)
            {
                
if (row.GetCell(j) != null)
                    dataRow[j] 
= row.GetCell(j).ToString();
            }

            table.Rows.Add(dataRow);
        }

        ExcelFileStream.Close();
        workbook 

= null;
        sheet 
= null;
        
return table;
    }
/// <summary>读取excel
    
/// 默认第一行为标头
    
/// </summary>
    
/// <param name="path">excel文档路径</param>
    
/// <returns></returns>
    public static DataTable RenderDataTableFromExcel(string path) {
        DataTable dt 
= new DataTable();

        HSSFWorkbook hssfworkbook;

using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
        {
            hssfworkbook 
= new HSSFWorkbook(file);
        }
        HSSFSheet sheet 
= hssfworkbook.GetSheetAt(0);
        System.Collections.IEnumerator rows 
= sheet.GetRowEnumerator();

        HSSFRow headerRow 

= sheet.GetRow(0);
        
int cellCount = headerRow.LastCellNum;for (int j = 0; j < cellCount; j++)
        {
            HSSFCell cell 
= headerRow.GetCell(j);
            dt.Columns.Add(cell.ToString());
        }
for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++)
        {
            HSSFRow row 
= sheet.GetRow(i);
            DataRow dataRow 
= dt.NewRow();for (int j = row.FirstCellNum; j < cellCount; j++)
            {
                
if (row.GetCell(j) != null)
                    dataRow[j] 
= row.GetCell(j).ToString();
            }

            dt.Rows.Add(dataRow);
        }

//while (rows.MoveNext())
        
//{
        
//    HSSFRow row = (HSSFRow)rows.Current;
        
//    DataRow dr = dt.NewRow();//    for (int i = 0; i < row.LastCellNum; i++)
        
//    {
        
//        HSSFCell cell = row.GetCell(i);//        if (cell == null)
        
//        {
        
//            dr[i] = null;
        
//        }
        
//        else
        
//        {
        
//            dr[i] = cell.ToString();
        
//        }
        
//    }
        
//    dt.Rows.Add(dr);
        
//}

        
return dt;
    }
}