.NET——NPOI操作excel


一、引言



C#操作excel的方法大概有这几种:

    1、采用OleDB读取EXCEL文件,把EXCEL文件当做一个数据源来进行数据的读取操作

    2、引用的com组件:Microsoft.Office.Interop.Excel.dll   读取EXCEL文件

    3、将EXCEL文件转化成CSV(逗号分隔)的文件,用文件流读取(等价就是读取一个txt文本文件)

    不过这些方法都比较老套了,现在很多都用NPOI进行开发。NPOI 是开源的 POI 项目的.NET版,可以用来读写Excel,Word,PPT文件。在处理Excel文件上,NPOI 可以同时兼容 xls 和 xlsx。官网提供了一份 Examples,给出了很多应用场景的例子,打包好的二进制文件类库,也仅有几MB,使用非常方便。

为啥使用它呢,优点:开源免费;不用安装office;不断更新团队强大。


    ExcelHelper类放到最后了,可以直接使用==




二、WebAPI接受上传excel文件,并打开存入数据库(excel读取)



1、前台代码


用于上传文件


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../lib/jquery/jquery-3.1.0.min.js"></script>
</head>
<body>
<label for="fileUpload">
    选择文件
</label>
<br/>
<input id="fileUpload" type="file" multiple="multiple"/>
<input id="btnUploadFile" type="button" value="上传文件"/>
<hr/>s
 <progress id="uploadprogress" max="100" value="0">0</progress>
<script>
    $(function() {
        $("#btnUploadFile").on("click", function () {
            var data = new FormData();
            var files = $("#fileUpload").get(0).files;
            data.append("name", "xcy");
            data.append("file", files[0]);

            $.ajax({
                type: "post",
                url: "http://localhost:27110/Region/uploadFile",
                contentType: false,
                cache: false,
                currentType: false,
                processData: false,
                data: data,
                error: function (xhr, ajaxOptions, thrownError) {
                    alert(xhr.responseText);
                    alert(thrownError);
                },
                xhr: function () {
                    var xhr = new window.XMLHttpRequest();
                    //Download progress
                    xhr.addEventListener("progress", function (evt) {
                        console.log(evt.lengthComputable);
                        if (evt.lengthComputable) {
                            var percentComplete = evt.loaded / evt.total;
                            $("progress").val(evt.loaded);
                        }
                    }, false);
                    return xhr;
                },
                beforeSend: function () {
                    $('#loading').show();
                },
                complete: function () {
                    $("#loading").hide();
                },
                success: function (json) {
                    $("#data").html("data receieved");
                }


            });
        });
    });
</script>
</body>
</html>


上传文件预览




2、后台WebAPI接收


controller类


        /// <summary>
        /// 读取上传文件,存入数据库
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public IHttpActionResult uploadFile()
        {
            HttpFileCollection files = HttpContext.Current.Request.Files;
            RegionDAL regionDAL = new RegionDAL();
            Callback callback = new Callback();
            //
            try
            {
                callback.status = 1;
                callback.msg = "success";
                callback.data = regionDAL.uploadFile(files);
            }
            catch (Exception e)
            {
                callback.status = 0;
                callback.msg = e.Message;
            }
            return Ok(callback);
        }


DAL类(这里存数据库的时候分段存的,每100条数据一存储;只存储了前两列的数据)


        public object uploadFile(HttpFileCollection files)
        {
            string prepath = "C:/Users/xcy/Desktop/";
            添加评估文件
            string filename;
            string savepath;
            foreach (string key in files.AllKeys)
            {
                HttpPostedFile file = files[key];
                //判断文件是否为空
                if (file.ContentLength > 0)
                {
                    filename = Guid.NewGuid().ToString() + "$" + file.FileName;
                    savepath = prepath + filename;
                    file.SaveAs(savepath);

                    
                    HSSFWorkbook hssfworkbook;
                    using (FileStream filestream = new FileStream(savepath, FileMode.Open, FileAccess.Read))
                    {
                        hssfworkbook =
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 .NET 6 中,你可以使用 NPOI 库来创建 Excel 文件。NPOI 是一个用于读取和写入 Microsoft Office 格式文档的 .NET 库,包括 Excel、Word 和 PowerPoint 文件。 以下是一个简单的示例,用于创建一个包含一些数据的 Excel 文件: 首先,你需要安装 NPOI 库,可以通过 NuGet 包管理器或者命令行工具来安装: ``` Install-Package NPOI -Version 2.5.4 ``` 或者使用 dotnet cli: ``` dotnet add package NPOI --version 2.5.4 ``` 然后,你需要引入 NPOI 命名空间: ```csharp using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System.IO; ``` 最后,可以按照以下步骤创建一个 Excel 文件: ```csharp // 创建一个工作簿 IWorkbook workbook = new XSSFWorkbook(); // 创建一个工作表 ISheet sheet = workbook.CreateSheet("Sheet1"); // 创建一行,并在该行中创建单元格 IRow row = sheet.CreateRow(0); row.CreateCell(0).SetCellValue("Name"); row.CreateCell(1).SetCellValue("Age"); // 添加一些数据 row = sheet.CreateRow(1); row.CreateCell(0).SetCellValue("John"); row.CreateCell(1).SetCellValue(30); row = sheet.CreateRow(2); row.CreateCell(0).SetCellValue("Jane"); row.CreateCell(1).SetCellValue(25); // 保存文件 using (var fileStream = new FileStream("example.xlsx", FileMode.Create, FileAccess.Write)) { workbook.Write(fileStream); } ``` 这将创建一个名为 `example.xlsx` 的 Excel 文件,其中包含两列数据:名称和年龄。 注意,这是一个简单的示例,你可以根据需要添加更多的行和列,并使用不同的数据类型。 ### 回答2: .NET 6版本中的NPOI库可以用于创建和操作Excel文件。NPOI是一个开源的.NET库,用于读取、写入和操作Office文件,包括Excel、Word和PowerPoint等。在.NET 6中使用NPOI创建Excel文件非常简单和方便。 首先,我们需要在项目中安装NPOI库。可以使用NuGet包管理器或者在项目文件中手动添加依赖关系。 安装完成后,我们可以创建一个新的Excel文件并添加数据。首先,我们需要创建一个Workbook对象,表示整个Excel文件。然后,我们可以创建一个Sheet对象,表示Excel中的一个工作表。接下来,我们可以使用Cell对象来添加数据到工作表中的单元格。 下面是一个简单的示例代码,创建一个包含两列数据的Excel文件: ```csharp using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; // 创建一个新的Excel文件 IWorkbook workbook = new XSSFWorkbook(); // 创建一个工作表 ISheet sheet = workbook.CreateSheet("Sheet1"); // 创建行和单元格,并添加数据 IRow row1 = sheet.CreateRow(0); row1.CreateCell(0).SetCellValue("姓名"); row1.CreateCell(1).SetCellValue("年龄"); IRow row2 = sheet.CreateRow(1); row2.CreateCell(0).SetCellValue("张三"); row2.CreateCell(1).SetCellValue(20); IRow row3 = sheet.CreateRow(2); row3.CreateCell(0).SetCellValue("李四"); row3.CreateCell(1).SetCellValue(25); // 保存Excel文件 using (FileStream fs = new FileStream("test.xlsx", FileMode.Create)) { workbook.Write(fs); } ``` 在这个示例中,我们使用`XSSFWorkbook`类创建一个新的Excel文件,使用`CreateSheet`方法创建一个名为"Sheet1"的工作表。然后,我们创建行和单元格,并使用`SetCellValue`方法设置单元格的值。最后,我们使用`FileStream`类将Excel文件保存到磁盘中。 通过这种方式,我们可以使用NPOI库在.NET 6中创建和操作Excel文件,为我们的应用程序提供强大的数据处理能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值