MiniExcel icon indicating copy to clipboard operation
MiniExcel copied to clipboard

NET Core不落地导出Excel支持

Open 1257960069 opened this issue 10 months ago • 2 comments

1.废除FastMode, 支持http响应流直接输出(取消了流回退功能,见解释) 2.每1000行进行重刷一次,节约内存 3不使用new List导致迭代器全部计算浪费内存 4.解释: 在OpenXML中,<x:dimension ref="..."/> 元素指定了工作表中使用的单元格区域,它定义了工作表中所有单元格的最小矩形范围。这个元素是可选的,因为Excel和其他兼容的电子表格程序通常能够在没有这个元素的情况下打开文件,并计算出实际使用的单元格范围。

然而,省略 <x:dimension ref="..."/> 可能会导致性能问题,尤其是在处理大型工作表时。如果存在这个元素,电子表格程序可以直接定位到工作表中的活动区域,而不需要扫描整个工作表来确定哪些单元格包含数据。这可以减少文件打开的时间和内存使用量。

所以,如果你在乎打开文件的性能,特别是对于大型的工作表,最好是包含 <x:dimension ref="..."/> 元素。但如果你在生成的文件中遇到兼容性问题,或者你正在处理的是小型工作表,并且不太关心打开文件的性能,那么你可以选择省略它。

在OpenXML SDK中,如果你使用OpenXmlWriter来写入工作表,你可以选择是否写入这个元素。如果你决定省略它,确保你的电子表格程序能够在没有这个元素的情况下正确处理文件。

1257960069 avatar Apr 27 '24 08:04 1257960069

@1257960069 谢谢贡献 Fastmode 还是会是一个选项,不会破坏性为了更方便支持.net core就移除,因为WPF用户会需要用到

shps951023 avatar Apr 29 '24 12:04 shps951023

@1257960069 谢谢贡献 Fastmode 还是会是一个选项,不会破坏性为了更方便支持.net core就移除,因为WPF用户会需要用到

Fastmode的意义我感觉并不大,还吃内存。能告诉我他具体的优势吗

1257960069 avatar Apr 29 '24 23:04 1257960069

@1257960069

  • 第一,fastmode 就是用于 .net core 不落地导出 excel,不需要遍历两次
  • 第二dimension是 excel 标准,像是 epplus, npoi 会需要读取,避免需要遍历全部一次,可以变成一个选项,但删除会变成破坏性更新

谢谢 PR! 也想邀请你进我们 team 🙌 ( 我会在下 commit 改回来支持 dimension,变成一个选项)

shps951023 avatar May 03 '24 14:05 shps951023

1,首先你这个代码不合并都支持直接写http响应流,我已经用在生产环境

2,你把SetPosition 去掉,和 fastmode 去掉 不知道这种破坏性变合并的意义 基于SetPosition 我这边已经在设计一些功能了

 不知道这种破坏性变合并到master分支的意义

@shps951023 @1257960069

shaofing avatar May 10 '24 08:05 shaofing

@1257960069 谢谢贡献 Fastmode 还是会是一个选项,不会破坏性为了更方便支持.net core就移除,因为WPF用户会需要用到

Fastmode的意义我感觉并不大,还吃内存。能告诉我他具体的优势吗

软件产品本来就是在适配各种可能性,你觉得意义不大,不代表别人不用

shaofing avatar May 10 '24 08:05 shaofing

@shaofing 是的,我合并是因为他有一个想法很好 : N次 flush 机制 可以针对特定用户以资源换取速度,我会在改进此处逻辑优化 其他的代码如留言,我会改回之前代码

shps951023 avatar May 10 '24 08:05 shps951023