首页/新闻资讯/正文详情

Excel>bytes导表方案

发布时间:2026/11/5 6:50:32 来源:云帆数科 栏目:资讯中心
Excel>bytes导表方案
为什么对于Excel表格要用紧密二进制不用json对于重复相同结构的列表、字典字段名会重复很多次多占用大量空间特别是字段名较长时。如果不是相同数据结构大量重复比如键值对配置就适合json。以及次要原因{}、、[]、:这些符号占用空间。Excel导bytes还有两种转换路线字符串具体类型byte[]一种是单元格字符串转换成C#对象int、float、bool、int[]、string[]、Vector3再把对象转换成byte[]BinaryWriter提供了把很多基本类型写入字节流的方法但是没有各种数组、Vector3、字典转换byte[]的方法要自己定义自己写字符串数据类型byte[]。运行时解析时把byte[]解析成各种对象解析byte[]对象还要自己写。有一些框架是用扩展方法给数组写转换、解析。字符串byte[]另一种是简单粗暴的把Excel单元格字符串用BinaryWriter写入byte[]运行时读取时还原字符串从字符串对象。这个转换要手写。要注意的是表格里的空单元格在bytes里要占位避免把一个字符串解析成错误的列。这里看BinaryWriter.Write()写入空字符串是只写入一个长度头。using(MemoryStream ms new MemoryStream()) using(BinaryWriter writer new BinaryWriter(ms)) { writer.Write(string.Empty); Debug.Log(ms.ToArray().Length); Debug.Log(BitConverter.ToString(ms.ToArray())); }这个方案要注意即使是int、bool、float这些基本类型也是写入了字符串解析时必须先读回字符串再Parse解析。那么这样又比直接写基本类型麻烦。并且不能整个文件就一堆字符串byte[]必须有办法分辨一行以及一共几行。分辨这些就是两种方案要么加长度头要么加结束符。那么在文件头加一个行数告诉循环读取多少次。每一行加\n的话那个是给字符串分割很方便BinaryReader识别\n反而不方便。每一行开头记录列数也没必要因为每一列是要填入对象字段的不用循环写结果就是不需要加任何行分割符就靠固定次数的读取字符串保证正确。混合方案那么我们发现对于int、float、boolBinaryWriter有转换方法直接转换byte[]、解析更简单对于List、Dictionary直接字符串转byte[]解析时转回字符串再解析手写代码更少不用再写字符串List、Listbyte[]、byte[]List。那么我们能不能把二者结合起来int、float、bool直接写其他用字符串。这样需要转换时判断类型行是不是int、float、bool但又没有必要每行判断一次每列的类型是固定的。如果不追求性能可以就每行判断一次。如果非要避免每行判断就要用多态给int、float、bool、string做Converter开始转换前遍历类型行得到一个Converter[]。关于BinaryWriter.Write(字符串)默认是UTF8编码在前面写一个字节记录内容的字节数。单纯UTF8编码、BinaryWriter.Write写入的内容对比顺序匹配二进制的缺点删字段、换字段顺序解析代码要跟着改EndOfStreamException: Unable to read beyond the end of the stream读到第一行最后一列遇到这个。FormatException: Too many bytes in what should have been a 7 bit encoded Int32.

相关推荐

微服务架构落地:业务域基建(下) —— 如动态定价与规则引擎,告别“改个价格发个版”
微服务架构落地:业务域基建(下) —— 如动态定价与规则引擎,告别“改个价格发个版”

大宗商品销采运储系统・六层架构连载(业务服务层)上一篇我们通过状态机,解决了单据流转的合规性问题。单据跑到哪一步,红绿灯说了算。但大宗商品交易中,还有一个比状态更敏感、变化更频繁的要素:价格。与普… · 2026/11/5 6:50:32

时间线 | CPO 光互联:从「推迟到 2029」到「量产元年」,只隔一个月
时间线 | CPO 光互联:从「推迟到 2029」到「量产元年」,只隔一个月

英伟达说 2026 是 CPO 光互联的商用元年,SemiAnalysis 一个月前却判断大规模量产要拖到 2028 之后。同一个技术,7 月被说成「再等两年」,8 月被宣布「今年就量产」,两句之间几乎没有中间地带。 大概率谁都没说谎,只是两… · 2026/11/5 6:49:32

Matter 生态|Matter 设备量产时,DAC 到底该提前备好,还是现做现发?
Matter 生态|Matter 设备量产时,DAC 到底该提前备好,还是现做现发?

Matter 产品从研发、认证走到量产阶段,工程团队会遇到这些问题:每台设备的 DAC(Device Attestation Certificate,设备认证证书) 和对应私钥,到底从哪来?怎么安全地进设备?目前行业里… · 2026/11/5 6:49:32

否定之否定规律的底层本质| 赵杰 | 量子哲学
否定之否定规律的底层本质| 赵杰 | 量子哲学

作者:赵杰清华大学硕士、微美全息云科技(NASDAQ:WIMI)董事长、微算法科技(NASDAQ:MLGO)董事长、育杰奖学金创始人一、爱子论核心公理(一切“肯定、否定、否定之否定”的量子本体根基… · 2026/11/5 7:57:53

jvm中的强软弱虚4种引用类型与gc的关系
jvm中的强软弱虚4种引用类型与gc的关系

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 7:57:53

小白程序员轻松入门大模型,AI大数据开发工程师进阶指南
小白程序员轻松入门大模型,AI大数据开发工程师进阶指南

本文深入剖析AI大数据开发工程师的核心能力与岗位需求,对比传统大数据工程师,指出Spark/Flink等基础技能已不再是优势。文章详细解析了三类典型岗位(业务型、模型导向型、AI数据基础设施工程师)的选拔逻辑,并总结了企业… · 2026/11/5 7:57:53

FHE层级
FHE层级

全同态加密的概念同态:密文计算的结果解密后,等于明文计算的结果。即 Dec(Enc(a)⊕Enc(b))ab全同态:支持任意深度的加法和乘法运算(不仅是单一操作,而且可以无限次组合)。第一层:密码学基础与底… · 2026/11/5 7:57:53

从印尼商标抢注到印尼商标续展:印尼公司注册前后,印尼法律顾问要盯住的六个关键节点
从印尼商标抢注到印尼商标续展:印尼公司注册前后,印尼法律顾问要盯住的六个关键节点

内容摘要:印尼商标制度在2026年完成流程重排与官费上调,执行层每个节点都换了参数。本文按检索、公证、提交、公告、实审、续展六个节点拆解印尼商标全流程的必备输入与常见退回原因,覆盖印尼商标抢注处置、印尼公司注册衔接与印尼法律顾问配… · 2026/11/5 7:57:53

Spring系列02:BeanFactory 与 ApplicationContext
Spring系列02:BeanFactory 与 ApplicationContext

这题你大概率只答了一半 面试八成会被问:「BeanFactory 和 ApplicationContext 有什么区别?」 多数人的回答停在「ApplicationContext 更高级、功能更多」,再往下问「多在哪」「为什么 Boot 默认用它」「两者启动行为有啥不同」,就… · 2026/11/5 7:56:53

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

多智能体协作系统架构设计与实践优化
多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39

大模型系统性入门实战指南:从原理到部署微调的全链路路线
大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39

鸿蒙文件系统沙箱机制解析与开发实践
鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码