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

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日