这是无意中在最后一行或列中,输入了数据或设置格式,系统为防止误删,不会自动删除此行列,就不能插入新行列,可以按Ctrl+End定位到最后单元格,确认无效后,先手动删除此行列,就可插入新行列了。
你想要插入几行,你就在后面删几行,想要插入几列,你就在后面空白的列删几列。如果不想总是删,那你就把空白的都删除。就不会出现类似的问题了。
Microsoft Excel是微软公司的办公软件Microsoft office的组件之一,是由Microsoft为Windows和Apple Macintosh操作系统的电脑而编写和运行的一款试算表软件。Excel 是微软办公套装软件的一个重要的组成部分,它可以进行各种数据的处理、统计分析和辅助决策操作,广泛地应用于管理、统计财经、金融等众多领域。
你想要插入几行,你就在后面删几行,想要插入几列,你就在后面空白的列删几列
如果不想总是删,那你就把空白的都删除。就不会出现类似的问题了。
导入Excel表格的数据,不是一条一条的数据新增,而是方便快速保存数据,判断数据的正确性。(导入Excel表格是方便我们在开发数据中快速的导入数据)
导入
1. 创建下载模板的数据方法,然后在HTML页面用window.open()方法打开2. 获取模板文件路径(后缀:.xls)3. 验证/判断模板文件是否存在在根目录,模板文件存在就获取文件名称,再返回文件(运用NPOI的引用)4. 接收Excel表格创建一个方法在传递的参数里用HttpPostedFileBase类来接收
接收图片或文件都用HttpPostedFileBase这个类5. 导入步骤:1. 获取上传的文件
2. 用byte[]把文件转换为二进制数组
3. 将二进制数组转换成内存流
4. 利用NPOI把内存流中的数据读取成Excel
5. 使用NPOI读取数据6. ①判断工作簿是否存在工作表,再获取第一个工作表
if(workBook.NumberOfSheets > 0)
NPOI.SS.UserModel.ISheet sheet =workBook.GetSheetAt(0);
② 再判断工作表是否有数据③ 然后把Excel表格数据保存到临时表格里面④ NPOI.SS.UserModel.IRow获取标题行,再获取表格列数,最后获取表格行数⑤ 循环添加标题行中的各个单元格的值(循环列)⑥ 移除临时表的空行⑦ 验证导入数据,保证数据的准确性 和 判断数据的重复性(用LINQ语句)
⑧ 循环遍历临时表中的数据
导出
表格导出数据分三种:①在已有的模板上导出数据(前提:必须要提前构建好模板)
② 直接导出数据(正常导出数据)
③ 含有合并表头的数据导出
这三种数据导出都要在含有NPOI插件基础上,把NPOI放在项目bin文件夹里面,然后在根目录浏览添加引用
含有合并表头的数据导出:将Excel通过文件流返回到浏览器下载,在页面通过window.open() 打开
第一步:导出Excel
创建一个方法,筛选数据后,创建Excel对象工作簿和创建Excel对象工作表第二步:给导出的Excel设置主标题第三步:设置数据 表头标题第四步:返回文件类型和名称 (定义文件流用MemoryStream)含有合并表头导出和直接导出(无模板)的共同点:
① 创建工作簿,再工作簿提取第一个工作表,表头样式设置,单元格样式、字体样式
② 将Excel转换为文件流,再将工作簿写入文件流
③ 返回格式都是return File(参数一:返回的流,参数二:保存的格式,参数三:文件名称);
含有模板导出:①:筛选数据后,检查模板文件是否存在②NPOI打开模板文件,构建单元格样式、设置标题、填充数据,最后通过File将数据返回
你的表格末行肯定不是空白的你先把表格移到最后,选中最后几行然后删除,就可以了。出现这种情况是因为你的末行为非空,EXCEL为了保护数据才会这样。希望对你有帮助。