国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

NPOI DataGridView導出EXCEL

2019-11-17 03:09:58
字體:
來源:轉載
供稿:網友

NPOI DataGridView導出Excel

NPOI 官方網站 http://npoi.codeplex.com/ 加載NPOI.DLL ,引用這兩個命名空間

using NPOI.HSSF.UserModel; using NPOI.SS.UserModel;

#region NPOI DataGridView 導出 EXCEL        /// <summary>        /// NPOI DataGridView 導出 EXCEL        /// </summary>        /// <param name="fileName"> 默認保存文件名</param>        /// <param name="dgv">DataGridView</param>        /// <param name="fontname">字體名稱</param>        /// <param name="fontsize">字體大小</param>        public void ExportExcel(string fileName, DataGridView dgv, string fontname, short fontsize)        {            //檢測是否有數據            if (dgv.SelectedRows.Count == 0) return;            //創建主要對象            HSSFWorkbook workbook = new HSSFWorkbook();            HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet("Weight");            //設置字體,大小,對齊方式            HSSFCellStyle style = (HSSFCellStyle)workbook.CreateCellStyle();            HSSFFont font = (HSSFFont)workbook.CreateFont();            font.FontName = fontname;            font.FontHeightInPoints = fontsize;            style.SetFont(font);            style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; //居中對齊            //添加表頭            HSSFRow dataRow = (HSSFRow)sheet.CreateRow(0);            for (int i = 0; i < dgv.Columns.Count; i++)            {                dataRow.CreateCell(i).SetCellValue(dgv.Columns[i].HeaderText);                dataRow.GetCell(i).CellStyle = style;            }            //注釋的這行是設置篩選的            //sheet.SetAutoFilter(new CellRangeAddress(0, dgv.Columns.Count, 0, dgv.Columns.Count));            //添加列及內容            for (int i = 0; i < dgv.Rows.Count; i++)            {                dataRow = (HSSFRow)sheet.CreateRow(i + 1);                for (int j = 0; j < dgv.Columns.Count; j++)                {                    string ValueType = dgv.Rows[i].Cells[j].Value.GetType().ToString();                    string Value = dgv.Rows[i].Cells[j].Value.ToString();                    switch (ValueType)                    {                        case "System.String"://字符串類型                            dataRow.CreateCell(j).SetCellValue(Value);                            break;                        case "System.DateTime"://日期類型                            System.DateTime dateV;                            System.DateTime.TryParse(Value, out dateV);                            dataRow.CreateCell(j).SetCellValue(dateV);                            break;                        case "System.Boolean"://布爾型                            bool boolV = false;                            bool.TryParse(Value, out boolV);                            dataRow.CreateCell(j).SetCellValue(boolV);                            break;                        case "System.Int16"://整型                        case "System.Int32":                        case "System.Int64":                        case "System.Byte":                            int intV = 0;                            int.TryParse(Value, out intV);                            dataRow.CreateCell(j).SetCellValue(intV);                            break;                        case "System.Decimal"://浮點型                        case "System.Double":                            double doubV = 0;                            double.TryParse(Value, out doubV);                            dataRow.CreateCell(j).SetCellValue(doubV);                            break;                        case "System.DBNull"://空值處理                            dataRow.CreateCell(j).SetCellValue("");                            break;                        default:                            dataRow.CreateCell(j).SetCellValue("");                            break;                    }                    dataRow.GetCell(j).CellStyle = style;                    //設置寬度                    sheet.SetColumnWidth(j, (Value.Length + 10) * 256);                }            }            //保存文件            string saveFileName = "";            SaveFileDialog saveDialog = new SaveFileDialog();            saveDialog.DefaultExt = "xls";            saveDialog.Filter = "Excel文件|*.xls";            saveDialog.FileName = fileName;            MemoryStream ms = new MemoryStream();            if (saveDialog.ShowDialog() == DialogResult.OK)            {                saveFileName = saveDialog.FileName;                if (!CheckFiles(saveFileName))                {                    MessageBox.Show("文件被站用,請關閉文件 " + saveFileName);                    workbook = null;                    ms.Close();                    ms.Dispose();                    return;                }                workbook.Write(ms);                FileStream file = new FileStream(saveFileName, FileMode.Create);                workbook.Write(file);                file.Close();                workbook = null;                ms.Close();                ms.Dispose();                MessageBox.Show(fileName + " 保存成功", "提示", MessageBoxButtons.OK);            }            else            {                workbook = null;                ms.Close();                ms.Dispose();            }        }        #endregion        #region 檢測文件被占用         [DllImport("kernel32.dll")]        public static extern IntPtr _lopen(string lpPathName, int iReadWrite);        [DllImport("kernel32.dll")]        public static extern bool CloseHandle(IntPtr hObject);        public const int OF_READWRITE = 2;        public const int OF_SHARE_DENY_NONE = 0x40;        public readonly IntPtr HFILE_ERROR = new IntPtr(-1);        /// <summary>        /// 檢測文件被占用         /// </summary>        /// <param name="FileNames">要檢測的文件路徑</param>        /// <returns></returns>        public bool CheckFiles(string FileNames)        {            if (!File.Exists(FileNames))            {                //文件不存在                return true;            }            IntPtr vHandle = _lopen(FileNames, OF_READWRITE | OF_SHARE_DENY_NONE);            if (vHandle == HFILE_ERROR)            {                //文件被占用                return false;            }            //文件沒被占用            CloseHandle(vHandle);            return true;        }        #endregion

具體效果如下:

2014-05-14 23-49-14


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 旬阳县| 金坛市| 册亨县| 黑龙江省| 澳门| 麻阳| 镇坪县| 房产| 太湖县| 麻城市| 云浮市| 溧阳市| 囊谦县| 得荣县| 顺昌县| 灵寿县| 象州县| 盖州市| 弥渡县| 阜宁县| 会泽县| 龙井市| 交口县| 南安市| 邯郸县| 宽甸| 专栏| 禄丰县| 黎川县| 永安市| 班玛县| 什邡市| 金沙县| 江陵县| 高淳县| 酒泉市| 常山县| 长沙县| 龙岩市| 永年县| 聂拉木县|