mini-software / MiniExcel

Fast, Low-Memory, Easy Excel .NET helper to import/export/template spreadsheet (support Linux, Mac)
https://www.nuget.org/packages/MiniExcel/
Apache License 2.0
2.69k stars 329 forks source link

xlsx文件导出,不支持数据追加 #547

Open ROMYIM opened 9 months ago

ROMYIM commented 9 months ago
image

MiniExcel Version

1.31.2

Description

  1. 文件导出,数据量较大,达到10万级。

  2. 采用分页查询,每次向文件流写入数据。

  3. 是用csv导出会有科学记数法问题(csv没有类型判断,excel程序默认纯数字文本为数字类型,但是有精度限制会导致精度丢失),所以只能采用xlsx文件格式导出

asuper0 commented 9 months ago

我感觉库中要做到这个是很复杂的,要适应各种情况,你急着用的话,建议你 参考这个代码 自己解开zip往文件中插数据,其实还比较简单的。 sheet文件的路径在这里 像我的一个sheet文件的结尾部分长这样

        <x:row r="18">
            <x:c r="A18" t="str" s="2">
                <x:v>uiLabelUserGroup.Text</x:v>
            </x:c>
            <x:c r="B18" s="2"></x:c>
            <x:c r="C18" t="str" s="2">
                <x:v>普通用户</x:v>
            </x:c>
        </x:row>
        <x:row r="19">
            <x:c r="A19" t="str" s="2">
                <x:v>uiLabelUsername.Text</x:v>
            </x:c>
            <x:c r="B19" s="2"></x:c>
            <x:c r="C19" t="str" s="2">
                <x:v>name</x:v>
            </x:c>
        </x:row>
    </x:sheetData>
    <x:drawing r:id="drawing1" />
</x:worksheet>

你只要记录一下<x:row>段的格式,然后自己生成每一行就好

ROMYIM commented 9 months ago

这种xml标签可以在哪查阅相关文档吗? xlsx其实是不是也是向文本文件输出XML内容? 如果是应该跟csv输出差不多吧,可能追加的时候要定位下标签对的position,再追加输出

asuper0 commented 9 months ago

我也是才开始用这个库,看源码才知道一丁点,你把xlsx文件后缀名改成zip,解压出来一看就能明白个大概了。 相比csv会复杂很多,但本质上也就是一堆xml文件