【问题标题】:How to set correctly the header range in C# (use EPPlus)?如何在 C# 中正确设置标题范围(使用 EPPlus)?
【发布时间】:2021-03-10 08:13:07
【问题描述】:
    using System.IO;   
    using System.Collections.Generic;
    using OfficeOpenXml;
    


namespace Project
{
public class CreateExcel
{

    public static void GenerateExcel(List<string> headerList, List<string> dataList, FileInfo filePath)
    {
        using (ExcelPackage excel = new ExcelPackage())
        {
            excel.Workbook.Worksheets.Add("Worksheet1");

            // Determine the header range (e.g. A1:D1)
            string headerRange = "A1:" + Char.ConvertFromUtf32(headerList.Count + 64) + "1";

            // Target a worksheet
            var worksheet = excel.Workbook.Worksheets["Worksheet1"];

            // Popular header row data
            worksheet.Cells[headerRange].LoadFromCollection(headerList);

            worksheet.Cells[2, 1].LoadFromCollection(dataList, false);

            excel.SaveAs(filePath);
        }
    }
}

我想用这个函数创建 .xlsx 文件,但是 headerRange 得到“A1:^1”值(当我使用我的 headerList,它有 30 个元素时),当然我得到这个错误:System.Exception : '无效的地址格式 ^1' . 如何正确设置 headerRange?

【问题讨论】:

  • 你首先想做什么?为什么要这样使用LoadFromCollection?该方法与LoadFromDataTableLoadFromDataReader 一起用于加载对象 列表并使用属性/列名称作为标题名称。您似乎想要的是设置一些单元格的值

标签: c# excel-formula char export-to-excel epplus


【解决方案1】:

请改用LoadFromArrays

var values=new List<object[]> {
    headerList.ToArray(),
    dataList.ToArray()
}; 
worksheet.Cells["A1"].LoadFromArrays(values);

LoadFromCollection 使用反射从强类型集合中加载数据,为每个属性创建不同的列

【讨论】:

    猜你喜欢
    • 2020-03-10
    • 1970-01-01
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    相关资源
    最近更新 更多