读写Excle,不用office环境

1.下载NPOI.dll,并添加引用

2.ExcelHelper帮助类,以下为读写的参照方法


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

HSSFWorkbook hssfworkbook; 

#region  导入Excel 返回Table

public DataTable ImportExcelFile(string filePath)

{

    #region//初始化信息

    try

    {

        using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))

        {

            hssfworkbook = new HSSFWorkbook(file);

        }

    }

    catch (Exception e)

    {

        throw e;

    }

    #endregion

    NPOI.SS.UserModel.ISheet sheet = hssfworkbook.GetSheetAt(0);

    System.Collections.IEnumerator rows = sheet.GetRowEnumerator();

    DataTable dt = new DataTable();

    for (int j = 0; j < (sheet.GetRow(0).LastCellNum); j++)

    {

        dt.Columns.Add(Convert.ToChar(((int)‘A‘) + j).ToString());

    }

    while (rows.MoveNext())

    {

        HSSFRow row = (HSSFRow)rows.Current;

        DataRow dr = dt.NewRow();

        for (int i = 0; i < row.LastCellNum; i++)

        {

            NPOI.SS.UserModel.ICell cell = row.GetCell(i);

            if (cell == null)

            {

                dr[i] = null;

            }

            else

            {

                dr[i] = cell.ToString();

            }

        }

        dt.Rows.Add(dr);

    }

    return dt;

}

#endregion

#region 导出excel

//Datatable导出Excel

public   MemoryStream  GridToExcelByNPOI(DataTable dt)

{

    try

    {

        HSSFWorkbook workbook = new HSSFWorkbook();

        ISheet sheet = workbook.CreateSheet("Sheet1");

        ICellStyle HeadercellStyle = workbook.CreateCellStyle();

        HeadercellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;

        HeadercellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;

        HeadercellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;

        HeadercellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;

        HeadercellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;

        //字体

        NPOI.SS.UserModel.IFont headerfont = workbook.CreateFont();

        headerfont.Boldweight = (short)FontBoldWeight.Bold;

        HeadercellStyle.SetFont(headerfont);

        //用column name 作为列名

        int icolIndex = 0;

        IRow headerRow = sheet.CreateRow(0);

        foreach (DataColumn item in dt.Columns)

        {

            ICell cell = headerRow.CreateCell(icolIndex);

            cell.SetCellValue(item.ColumnName);

            cell.CellStyle = HeadercellStyle;

            icolIndex++;

        }

        ICellStyle cellStyle = workbook.CreateCellStyle();

        //为避免日期格式被Excel自动替换,所以设定 format 为 『@』 表示一率当成text來看

        cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("@");

        cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;

        cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;

        cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;

        cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;

        NPOI.SS.UserModel.IFont cellfont = workbook.CreateFont();

        cellfont.Boldweight = (short)FontBoldWeight.Normal;

        cellStyle.SetFont(cellfont);

        //建立内容行

        int iRowIndex = 1;

        int iCellIndex = 0;

        foreach (DataRow Rowitem in dt.Rows)

        {

            IRow DataRow = sheet.CreateRow(iRowIndex);

            foreach (DataColumn Colitem in dt.Columns)

            {

                ICell cell = DataRow.CreateCell(iCellIndex);

                cell.SetCellValue(Rowitem[Colitem].ToString());

                cell.CellStyle = cellStyle;

                iCellIndex++;

            }

            iCellIndex = 0;

            iRowIndex++;

        }

        //自适应列宽度

        for (int i = 0; i < icolIndex; i++)

        {

            sheet.AutoSizeColumn(i);

        }

        //写Excel

        MemoryStream  ms = new MemoryStream ();

        workbook.Write(ms);

        ms.Flush();

        ms.Position = 0;

        return ms;

    }

    catch (Exception ex)

    {

        throw ex;

    }

}

#endregion

时间: 2024-10-09 04:03:33

读写Excle,不用office环境的相关文章

TestFlight的使用--再也不用担心环境打错了

一.前言 在iOS开发过程中,难免会遇到各种Bug.因此你会去解决所有的Bug,然后提交到AppStore.但是,有的人也许会遇到这种情况:上架发布之后下载最新的包,发现访问的环境错误.仔细查看,原来是上传的包里面的环境打错了(正式环境.日常环境.预发环境,打的不是正式环境).这种问题很尴尬,因为测试工程师在测试的时候使用的包的确没问题,所以这不是测试的锅,只能是开发人员的锅.经过我的测试,打好的用于上传到AppStore的release包是无法安装到测试机器上的.所以在你上传到AppStore

html读写excle文档

import <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script src="http://oss.sheetjs.com/js-xlsx/xlsx.full.min.js"></script> <style> pre {outline: 1px solid #

Katalon系列二十:读写Excle

import org.apache.poi.xssf.usermodel.XSSFSheet import org.apache.poi.xssf.usermodel.XSSFWorkbook FileInputStream file = new FileInputStream (new File("E:\\Testdata.xlsx")) XSSFWorkbook workbook = new XSSFWorkbook(file); XSSFSheet sheet = workboo

屌炸天实战 MySQL 系列教程(四)【秒杀七年经验 LowB工程师】 主从复制、读写分离、模拟宕机、备份恢复方案生产环境实战

第一篇:屌炸天实战 MySQL 系列教程(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:屌炸天实战 MySQL 系列教程(二) 史上最屌.你不知道的数据库操作 第三篇:屌炸天实战 MySQL 系列教程(三)你不知道的 视图.触发器.存储过程.函数.事物.索引.语句 第四篇:屌炸天实战 MySQL 系列教程(四) 主从复制.读写分离.模拟宕机.备份恢复方案生产环境实战 去年公司有一个七年PHP开发经验的工程师,想要跳槽. 去国内某知名互联网公司面试后,被虐惨了,非要我给他讲讲什么是主从

【转1】Appium 1.6.3 在Xcode 8, iOS 10.2(模拟器)测试环境搭建 经验总结

Appium 1.6.3 在Xcode 8, iOS 10.2(模拟器)测试环境搭建 经验总结 关于 Appium 1.6.3 在Xcode 8, 10.2 的iOS模拟器上的问题很多,本人也差点放弃,最终成功运行,确实不容易,故此写篇文章,供大家参考,让大家少走弯路.一. 安装Appium(1) 先安装node-js,然后通过node-js命令安装 Appium     在https://nodejs.org/en/download/ 下载 macOS Installer (.pkg) 安装,

【原创】.NET读写Excel工具Spire.Xls使用(1)入门介绍

在.NET平台,操作Excel文件是一个非常常用的需求,目前比较常规的方法有以下几种: 1.Office Com组件的方式:这个方式非常累人,微软的东西总是这么的复杂,使用起来可能非常不便,需要安装Excel,对于服务器,有时候还需要为配置IIS权限.折腾人,看到很多人在群里面使用这个东西,出现各种抓狂的错误: 2.开源.NET组件NPOI方式:这个方式应该是很多人都在使用的,这个开源的组件相比第一种,虽然稍微简单了点(2003支持比较好,新版本也支持Xlsx),但还是非常好用的:最近在浏览NP

JS异步上传Excel 并使用NPOI进行读写操作

实现功能 导入--客户端使用 ajaxfileupload.js 插件实现Excel的异步上传,并在服务端解析成JSON字符串返回页面 导出--将页面中的grid表拼接成JSON串上传至服务器,在服务端新建Excel并将数据导入,随后返回url给用户下载 客户端(Test.aspx) 页面上需要实现的效果是显示一个"导入"按钮,hover时会显示标准格式图片,点击触发上传事件,选择Excel文件后上传到服务器,HTML代码如下 PS:使用了Bootstrap样式,也可以自己定义.&qu

.NET读写Excel工具Spire.Xls使用(1)入门介绍

原文:[原创].NET读写Excel工具Spire.Xls使用(1)入门介绍 在.NET平台,操作Excel文件是一个非常常用的需求,目前比较常规的方法有以下几种: 1.Office Com组件的方式:这个方式非常累人,微软的东西总是这么的复杂,使用起来可能非常不便,需要安装Excel,对于服务器,有时候还需要为配置IIS权限.折腾人,看到很多人在群里面使用这个东西,出现各种抓狂的错误: 2.开源.NET组件NPOI方式:这个方式应该是很多人都在使用的,这个开源的组件相比第一种,虽然稍微简单了点

网易cetus之读写分离

一. 简介 Cetus是由C语言开发的关系型数据库MySQL的中间件,主要提供了一个全面的数据库访问代理功能.Cetus连接方式与MySQL基本兼容,应用程序几乎不用修改即可通过Cetus访问数据库,实现了数据库层的水平扩展和高可用.Cetus由网易乐得专家技术团队领队,经多部门协调合作设计出来的优秀中间件. 具体详细可参考官网:https://github.com/Lede-Inc/cetus?本文主要基于读写分离的实践? 二. 读写分离的搭建 1.安装依赖 yum install cmake