特爱C# 2024-02-02 11:16 采纳率: 0%
浏览 8

C# 不引用包直接解析excel文件试过吗

C# 不引用包直接解析excel文件有大哥试过吗?菜鸟希望得到C#大哥的帮助 不引用包直接解析excel文件

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-02-02 11:19
    关注

    引自免费微信小程序:皆我百晓生

    在C#中,不引用任何第三方包直接解析Excel文件(.xlsx格式或更旧的.xls格式)是可能的,但实现起来非常复杂且工作量大,因为您需要自己处理Excel文件的内部结构和压缩算法(对于.xlsx文件而言)。实际上,大多数开发者都会选择使用成熟的库如Microsoft.Office.Interop.Excel(仅适用于本地安装了Office环境的情况)或者开源的第三方库如EPPlusNPOI等来处理Excel文件。

    然而,如果你确实想要了解如何不依赖外部包进行基础的读取操作,我可以提供一个简化版的概念性示例,仅用于读取xls格式(非XML格式的旧版Excel文件),通过逐行逐列读取二进制流的方式。请注意,由于这个方法过于底层且有诸多限制,实际应用中强烈建议使用专业库。以下代码仅为概念演示:

    using System;
    using System.IO;
    
    public class ExcelStreamReader
    {
        private readonly BinaryReader _reader;
    
        public ExcelStreamReader(string filePath)
        {
            FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
            _reader = new BinaryReader(fileStream);
            // 这里需要自行处理BOF/EOF标记以定位到数据区域,并理解Biff记录结构
            // 实际操作远比这复杂得多,此处省略数千行代码...
        }
    
        // 简化的单元格读取方法
        // 在实际Excel文件中,还需要处理合并单元格、样式、公式等多种情况
        public string ReadCell(int row, int column)
        {
            // 这里只是一个模拟,实际你需要根据Biff记录结构移动流并解析内容
            throw new NotImplementedException("此方法仅为概念示意,未实现真正的Excel BIFF记录解析");
        }
    
        public void Close()
        {
            _reader.Close();
        }
    }
    
    // 使用示例:
    public static void Main(string[] args)
    {
        var reader = new ExcelStreamReader("path_to_your_file.xls");
    
        // 假设我们能正确找到和读取某个单元格
        string cellValue = reader.ReadCell(1, 1);
    
        Console.WriteLine($"单元格(1, 1)的值为: {cellValue}");
    
        reader.Close();
    }
    

    由于解析Excel文件涉及复杂的内部结构,以上代码并未给出完整的解决方案,实际编写时需深入研究Excel文件格式规范。因此,在实际开发场景下,请务必考虑使用成熟可靠的库,以便高效、稳定地处理Excel文件。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月2日

悬赏问题

  • ¥15 需要在vitis下实现彩调视频图像累加,并输出
  • ¥15 解决不了的LNK2019错误
  • ¥20 MATLAB仿真三相桥式全控整流电路
  • ¥15 EDA技术关于时序电路设计
  • ¥15 百度文心一言流式返回sse失败
  • ¥15 由于远程方已关闭传输流,身份验证失败
  • ¥15 rt-detr,PCB,目标检测
  • ¥15 有偿求指导实证代码。cfps清洗合并后,无论是构建平衡面板还是非平衡面板,都是只剩几百个样本量。求指导一下哪里出问题了,不要潦草回复
  • ¥15 mutlinichenet
  • ¥50 Qt5.14.2怎样使用qlistwidget存储指针类数据并更新?