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

无Excel环境下服务器端CSV转Excel的实现问题求助

可行解决方案推荐

方案1:使用EPPlus(推荐,适配.NET/.NET Core)

EPPlus是开源的Excel操作类库,无需依赖本地Excel环境,能生成标准可正常打开的xlsx文件。

操作步骤:

  1. 安装EPPlus NuGet包:执行命令 Install-Package EPPlus,或通过NuGet包管理器可视化安装。
  2. 示例代码:
using OfficeOpenXml;
using System.IO;

string targetFileName = GenerateTargetFileName(sourceFileName);
string sourcePath = Path.Combine(sourceloc, sourceFileName);
string targetPath = Path.Combine(targetloc, targetFileName);

// 设置EPPlus许可证(EPPlus 5及以上版本要求)
ExcelPackage.LicenseContext = LicenseContext.NonCommercial; // 商用场景请改为LicenseContext.Commercial

using (var package = new ExcelPackage())
{
    // 创建工作表
    var worksheet = package.Workbook.Worksheets.Add("Sheet1");
    
    // 读取CSV内容并写入Excel
    using (var reader = new StreamReader(sourcePath))
    {
        int rowNum = 1;
        while (!reader.EndOfStream)
        {
            var line = reader.ReadLine();
            // 若CSV存在带逗号的引号包裹字段,建议搭配CsvHelper库解析,避免手动分割出错
            var cellValues = line.Split(',');
            
            for (int colNum = 0; colNum < cellValues.Length; colNum++)
            {
                worksheet.Cells[rowNum, colNum + 1].Value = cellValues[colNum];
            }
            rowNum++;
        }
    }
    
    // 自动调整列宽
    worksheet.Cells.AutoFitColumns();
    
    // 保存生成的Excel文件
    package.SaveAs(new FileInfo(targetPath));
}

方案2:使用NPOI(兼容.NET Framework和.NET Core)

NPOI是成熟的跨平台Office文件操作库,同样无需依赖Excel环境,支持多种Office格式。

操作步骤:

  1. 安装NPOI NuGet包:执行命令 Install-Package NPOI。
  2. 示例代码:
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;

string targetFileName = GenerateTargetFileName(sourceFileName);
string sourcePath = Path.Combine(sourceloc, sourceFileName);
string targetPath = Path.Combine(targetloc, targetFileName);

// 创建xlsx工作簿和工作表
IWorkbook workbook = new XSSFWorkbook();
ISheet sheet = workbook.CreateSheet("Sheet1");

// 读取CSV内容并写入Excel
using (var reader = new StreamReader(sourcePath))
{
    int rowIndex = 0;
    while (!reader.EndOfStream)
    {
        var line = reader.ReadLine();
        var cellValues = line.Split(',');
        IRow row = sheet.CreateRow(rowIndex);
        
        for (int colIndex = 0; colIndex < cellValues.Length; colIndex++)
        {
            row.CreateCell(colIndex).SetCellValue(cellValues[colIndex]);
        }
        rowIndex++;
    }
}

// 自动调整列宽
for (int i = 0; i < sheet.GetRow(0).LastCellNum; i++)
{
    sheet.AutoSizeColumn(i);
}

// 保存文件
using (var fs = new FileStream(targetPath, FileMode.Create, FileAccess.Write))
{
    workbook.Write(fs);
}

关于Sylvan Data生成损坏文件的修复尝试

你之前的Sylvan Data代码可能缺少资源释放或刷新操作,导致文件写入不完整,可尝试修改为以下形式:

using (var csvreader = CsvDataReader.Create(sourcePath))
using (var excelwrite = ExcelDataWriter.Create(targetPath))
{
    excelwrite.Write(csvreader);
    excelwrite.Flush();
}

不过仍推荐前两种经过广泛验证的类库,稳定性和兼容性更有保障。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:13:21