C# Excel操作NPOI

本文介绍了如何使用C#结合NPOI库进行Excel的导入和导出操作,包括接口定义如ExcelImport和ExportPlantData,以及ExcelToDataTable方法用于将Excel转换为DataTable,并移除空行,导出时需注意请求方式必须为表单提交。
摘要由CSDN通过智能技术生成

EXCEL导入

  • 接口ExcelImport
  • ExcelToDataTable
  • 去除datatable中的空行RemoveEmpty

EXCEL导出 (请求方式必须为表单提交)

  • 接口ExportPlantData(Void)
  • 接口ExportPlantData
  • 新建类 重写Npoi流方法

EXCEL导入

接口ExcelImport

		/// <summary>
        ///导入Excel  先将文件保存到服务器本地 然后访问服务器文件地址,获取文件
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        [HttpPost]
        public async Task<Result> ExcelImport()
        {
            var request = HttpContext.Current.Request;
            var tableName=request.Params["TableName"];
            var server = HttpContext.Current.Server;
            HttpPostedFile postFile;
            if (request.Files.Count > 0)
            {
                //单文件上传,多文件for
                postFile = request.Files[0];
            }
            else
            {
                return Result.Failed("无文件");
            }
            try
            {
                var filePath = server.MapPath("~/UpLoad/");
                if (!Directory.Exists(filePath))
                {
                    Directory.CreateDirectory(filePath);
                }
                var fileName = Path.GetFileName(postFile.FileName);
                var fileExtention = Path.GetExtension(fileName);
                if (fileExtention != ".xls" && fileExtention != ".xlsx")
                {
                    return Result.Failed("文件格式非.xls 或 .xlsx");
                }
                var saveFileName = filePath + Guid.NewGuid() + fileExtention;
                postFile.SaveAs(saveFileName);
                _deleteFile = saveFileName;
                var excelToList = await _service.ExcelToList(tableName, saveFileName);
                if (excelToList == null || excelToList.Count<1 || excelToList[0] == null || excelToList[0].Count < 1)
                    return Result.Failed("文件为空");
                return await _service.ExcelImport(tableName, excelToList) ? Result.Successed : Result.Failed("操作失败");
            }
            catch (Exception ex)
            {
                return Result.Failed(ex.ToString());
            }
            finally
            {
                if (!string.IsNullOrEmpty(_deleteFile))
                    File.Delete(_deleteFile);
            }
        }

ExcelToDataTable

    /// </summary>
    /// <param name="filePath">Excel位置</param>
    /// <param name="tableName">Table名字</param>
    /// <param name="sheetIndex">sheet索引</param>
    /// <returns></returns>
    public static Task<DataTable> ExcelToDataTable(string filePath, string tableName, int sheetIndex)
    {	
        return Task.Run(() =>
        {
            DataTable fileToTable = new DataTable();
            if (!string.IsNullOrEmpty(tableName))
            {
                fileToTable.TableName = tableName;
            }
            using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
            {
                IWorkbook workBook = null;
                try {
                    workBook = new XSSFWorkbook(file);
                }
                catch {
                    workBook = new HSSFWorkbook(file);
                }
                ISheet sheet = workBook.GetSheetAt(sheetIndex);
                //列头
                foreach (ICell item in sheet.GetRow(sheet.FirstRowNum).Cells)
                {
                    fileToTable.Columns.Add(item.ToString(), typeof(string));
                }
                //写入内容
                System.Colle
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值