博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NOPI导入导出
阅读量:4557 次
发布时间:2019-06-08

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

using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using System;using System.Data;using System.IO;using System.Windows.Forms;namespace Excel导出示例{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        private void btnIn_Click(object sender, EventArgs e)        {            OpenFileDialog ofd = new OpenFileDialog();            ofd.Filter = "xls|*.xls|xlsx|*.xlsx";            ofd.ShowDialog();            string file = ofd.FileName;            Import(file);        }        private void btnOut_Click(object sender, EventArgs e)        {            SaveFileDialog sfd = new SaveFileDialog();            sfd.ShowDialog();            string file = sfd.FileName;            Outport(this.dataGridView1.DataSource as DataTable, file);        }        #region 导入        private void Import(string filePath)        {                      try            {                FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read);                HSSFWorkbook hssfworkbook = new HSSFWorkbook(file);                ISheet sheet = hssfworkbook.GetSheetAt(0);                DataTable dt = new DataTable();                for (int j = 0; j < (sheet.GetRow(0).LastCellNum); j++)                {                    dt.Columns.Add(sheet.GetRow(0).Cells[j].ToString());                }                System.Collections.IEnumerator rows = sheet.GetRowEnumerator();                rows.MoveNext();//跳过第一行                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);                }                this.dataGridView1.DataSource = dt;                this.dataGridView1.Refresh();            }            catch (Exception e)            {                MessageBox.Show(e.Message);            }        }        /         / Excel文件导成Datatable        /         / Excel文件目录地址        / Datatable表名        / Excel sheet index        / 
//public static DataTable XlSToDataTable(string strFilePath, string strTableName, int iSheetIndex) //{ // string strExtName = Path.GetExtension(strFilePath); // DataTable dt = new DataTable(); // if (!string.IsNullOrEmpty(strTableName)) // { // dt.TableName = strTableName; // } // if (strExtName.Equals(".xls") || strExtName.Equals(".xlsx")) // { // using (FileStream file = new FileStream(strFilePath, FileMode.Open, FileAccess.Read)) // { // HSSFWorkbook hssfworkbook = new HSSFWorkbook(file); // ISheet sheet = hssfworkbook.GetSheetAt(iSheetIndex); // //列头 // foreach (ICell item in sheet.GetRow(sheet.FirstRowNum).Cells) // { // dt.Columns.Add(item.ToString(), typeof(string)); // } // //写入内容 // System.Collections.IEnumerator rows = sheet.GetRowEnumerator(); // while (rows.MoveNext()) // { // IRow row = (HSSFRow)rows.Current; // if (row.RowNum == sheet.FirstRowNum) // { // continue; // } // DataRow dr = dt.NewRow(); // foreach (ICell item in row.Cells) // { // switch (item.CellType) // { // case CellType.Boolean: // dr[item.ColumnIndex] = item.BooleanCellValue; // break; // case CellType.Error: // dr[item.ColumnIndex] = ErrorEval.GetText(item.ErrorCellValue); // break; // case CellType.Formula: // switch (item.CachedFormulaResultType) // { // case CellType.Boolean: // dr[item.ColumnIndex] = item.BooleanCellValue; // break; // case CellType.Error: // dr[item.ColumnIndex] = ErrorEval.GetText(item.ErrorCellValue); // break; // case CellType.Numeric: // if (DateUtil.IsCellDateFormatted(item)) // { // dr[item.ColumnIndex] = item.DateCellValue.ToString("yyyy-MM-dd hh:MM:ss"); // } // else // { // dr[item.ColumnIndex] = item.NumericCellValue; // } // break; // case CellType.String: // string str = item.StringCellValue; // if (!string.IsNullOrEmpty(str)) // { // dr[item.ColumnIndex] = str.ToString(); // } // else // { // dr[item.ColumnIndex] = null; // } // break; // case CellType.Unknown: // case CellType.Blank: // default: // dr[item.ColumnIndex] = string.Empty; // break; // } // break; // case CellType.Numeric: // if (DateUtil.IsCellDateFormatted(item)) // { // dr[item.ColumnIndex] = item.DateCellValue.ToString("yyyy-MM-dd hh:MM:ss"); // } // else // { // dr[item.ColumnIndex] = item.NumericCellValue; // } // break; // case CellType.String: // string strValue = item.StringCellValue; // if (string.IsNullOrEmpty(strValue)) // { // dr[item.ColumnIndex] = strValue.ToString(); // } // else // { // dr[item.ColumnIndex] = null; // } // break; // case CellType.Unknown: // case CellType.Blank: // default: // dr[item.ColumnIndex] = string.Empty; // break; // } // } // dt.Rows.Add(dr); // } // } // } // return dt; //} #endregion #region 导出 //Datatable导出Excel private void Outport(DataTable dt, string filename) { HSSFWorkbook hssfworkbook = new HSSFWorkbook(); try { ISheet sheet = hssfworkbook.CreateSheet("Sheet1"); ICellStyle HeadercellStyle = hssfworkbook.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 = hssfworkbook.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 = hssfworkbook.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 = hssfworkbook.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 FileStream file = new FileStream(filename, FileMode.OpenOrCreate); hssfworkbook.Write(file); file.Flush(); file.Close(); MessageBox.Show("导出成功!"); } catch (Exception ex) { MessageBox.Show("导出失败!"); } finally { hssfworkbook = null; } } #endregion }}

参考文章:

1.http://www.cnblogs.com/colder/p/3611906.html.

2.http://www.cnblogs.com/zhuawang/archive/2012/12/12/2815367.html.

转载于:https://www.cnblogs.com/venux/p/5193520.html

你可能感兴趣的文章
Python----面向对象的软件开发
查看>>
查看Ubuntu版本
查看>>
maven deploy 指定-DaltDeploymentRepository
查看>>
Codeforces 549A. Face Detection[模拟]
查看>>
POJ1741Tree [点分治]【学习笔记】
查看>>
BZOJ 3238: [Ahoi2013]差异 [后缀自动机]
查看>>
UVA 12633 Super Rooks on Chessboard [fft 生成函数]
查看>>
memcache 启动 failed to start
查看>>
欧拉函数与欧拉定理
查看>>
fzyzojP2984 -- 序列变换问题
查看>>
poj 2888 Magic Bracelet
查看>>
mysql排序让空值NULL排在数字后边
查看>>
Mono for Android 实现高效的导航
查看>>
30多条mysql数据库优化方法,千万级数据库记录查询轻松解决
查看>>
动画制作 手机APP制作以及响应式的实现
查看>>
我的第一篇博文(Winfrom下WebBrowser控件的使用)
查看>>
git使用笔记(六)github
查看>>
30+ 强大的Buddypress主题–开始您的社区站点吧
查看>>
cinder侧卸载卷流程分析
查看>>
codeforcesD_状压dp
查看>>