You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Excel列存储到字符串数组并保留空白单元格值

解决Excel空白单元格未存入空字符串的问题

嘿,我明白你的问题了——读取Excel列的时候,空白单元格直接被跳过,导致数组里的位置不对对吧?这是因为用Microsoft.Office.Interop.Excel读取时,空白单元格的值默认是null,如果你的代码只收集了非空值,就会漏掉这些位置。我给你调整下代码,保证空白单元格会被存成空字符串,完美保留原列的结构:

完整示例代码

using Microsoft.Office.Interop.Excel;
using System;

class ExcelColumnReader
{
    static void Main()
    {
        // 初始化Excel应用
        Application excelApp = new Application();
        // 打开目标工作簿(替换成你的文件路径)
        Workbook workbook = excelApp.Workbooks.Open(@"C:\YourFile.xlsx");
        // 选择目标工作表(替换成你的工作表名称)
        Worksheet worksheet = workbook.Worksheets["Sheet1"];

        // 确定要读取的行数:这里可以手动指定,或者用UsedRange获取实际使用行数
        // 比如如果要读取C列所有已使用的行,就用 worksheet.UsedRange.Rows.Count
        int totalRows = 4; 
        string[] mystring = new string[totalRows];

        // 遍历每一行,逐个处理单元格
        for (int i = 0; i < totalRows; i++)
        {
            // 定位到C列第i+1行(Excel行号从1开始,3代表C列)
            Range targetCell = worksheet.Cells[i + 1, 3];
            // 关键:把null(空白单元格)转换成空字符串,非空值转成字符串
            mystring[i] = targetCell.Value != null ? targetCell.Value.ToString() : string.Empty;
        }

        // 测试输出结果
        foreach (string item in mystring)
        {
            int index = Array.IndexOf(mystring, item);
            Console.WriteLine($"mystring[{index}] = \"{item}\"");
        }

        // 务必释放Excel COM资源,避免进程残留
        workbook.Close();
        excelApp.Quit();
        System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
        System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
        System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
    }
}

关键说明

  • 遍历指定范围:不再依赖自动筛选非空值的逻辑,而是逐个遍历你需要的每一行单元格,确保每个位置都被填充
  • 处理null值:用三元运算符targetCell.Value != null ? ... : string.Empty把空白单元格的null值转换成空字符串,这样数组里的位置就和Excel列完全对应了
  • 灵活指定行数:如果不知道具体行数,可以用worksheet.UsedRange.Rows.Count获取工作表中已使用的总行数,但如果C列的空白行在中间,这个方法也能覆盖到

简化版(用LINQ)

如果你喜欢更简洁的写法,可以用LINQ直接转换单元格范围:

// 指定要读取的C列范围(比如C1到C4)
Range columnRange = worksheet.Range["C1:C4"];
// 直接转换为字符串数组,自动处理空白单元格
string[] mystring = columnRange.Cast<Range>()
                               .Select(cell => cell.Value != null ? cell.Value.ToString() : string.Empty)
                               .ToArray();

这样处理后,你的数组就会变成mystring[0]="1"、mystring[1]="2"、mystring[2]=""、mystring[3]="3",完全符合你的需求啦!

内容的提问来源于stack exchange,提问作者Romeo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:09:35