使用C#与Syncfusion库生成Excel时无法正常保存文件问题求助
问题原因与修复方案
核心问题排查
- 路径定义错误:你当前使用的是相对路径
@"Documents\\" + "DMBErrors.xlsx",程序会将该路径解析为进程当前工作目录下的Documents子文件夹,而非系统默认的用户文档目录。如果是Visual Studio调试运行,默认工作目录为项目的bin/Debug/对应框架版本路径,你可以前往该目录下查找文件。同时你混用了逐字字符串标识@和双反斜杠转义,会导致实际路径格式异常。 - 目录不存在静默失败:如果你指定的相对路径下的Documents文件夹不存在,部分Excel处理库版本不会主动抛出异常,也不会自动创建目录,会直接跳过保存操作。
- 权限不足:程序运行身份没有对应路径的写入权限时,异常可能被库内部捕获未向外抛出。
修复代码
把保存逻辑替换为以下实现即可:
using (ExcelEngine excelEngine = new ExcelEngine()) { //Initialize application IApplication application = excelEngine.Excel; //Set the default application version as Excel 2016 application.DefaultVersion = ExcelVersion.Excel2016; //Create a new workbook IWorkbook workbook = application.Workbooks.Create(1); //Access first worksheet from the workbook instance IWorksheet worksheet = workbook.Worksheets[0]; connection.Open(); SqlCommand cmd = new SqlCommand(PHLIP251, connection); PHLIP251Datatable.Load(cmd.ExecuteReader()); worksheet.ImportDataTable(PHLIP251Datatable, true, 1, 1); worksheet.UsedRange.AutofitColumns(); // 修复:获取系统文档目录绝对路径 string documentPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); // 修复:用Path.Combine自动处理路径拼接,避免转义错误 string saveFullPath = Path.Combine(documentPath, "DMBErrors.xlsx"); // 可选:输出完整路径方便后续定位文件 Console.WriteLine("文件保存路径:" + saveFullPath); //Save the workbook to disk in xlsx format workbook.SaveAs(saveFullPath); connection.Close(); }
内容的提问来源于stack exchange,提问作者user16188164
相关产品推荐
相关产品推荐

