使用 Syncfusion.XlsIO 将 .xlsx 文件转换为 .csv - 空引用异常

Converting a .xlsx file to .csv using Syncfusion.XlsIO - Null reference exception

我在 blob 存储中有一个 .xslx 格式的文件,我正在尝试使用 Syncfusion.XlsIO Nuget 包将其转换为 .csv 格式。

我试过以下方法:


        private async Task ConvertExcelToCsv()
        {
            var fileName = await _fileStore.GetContainerFileAsync(AppSettingsConstants.FileNames.Container, "myfile.xlsx");

            using (ExcelEngine excelEngine = new ExcelEngine())
            {
                var application = excelEngine.Excel;
                var workbook = application.Workbooks.Open(fileName.Name);
                var worksheet = workbook.Worksheets[1];
                worksheet.SaveAs("myfile.csv", ",");
            }
        }

当我调试时,文件名成功检索,但应用程序在 using (ExcelEngine excelEngine = new ExcelEngine()) 中断并出现 NullReferenceException 错误。

我哪里错了?

此处定义了您可以执行此操作的方式:https://www.syncfusion.com/kb/9098/how-to-export-excel-data-to-csv-file 很可能,您不仅需要从 NuGet 安装 Syncfusion.XlsIO.WinForms ,还需要 System.Drawing.CommonSystem.Security.Permissions.

此代码有效:

            try
            {

                //Initialize ExcelEngine
                using (ExcelEngine excelEngine = new ExcelEngine())
                {
                    //Initialize Application
                    IApplication application = excelEngine.Excel;

                    //Set default version for application
                    application.DefaultVersion = ExcelVersion.Excel2013;

                    //Open a workbook to be export as CSV
                    IWorkbook workbook = application.Workbooks.Open(@"E:\Users\Public\Documents\" + "ExcelFile.xlsx");

                    //Accessing first worksheet in the workbook
                    IWorksheet worksheet = workbook.Worksheets[0];

                    //Save the workbook to csv format
                    worksheet.SaveAs("Output.csv", ",");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                throw;
            }

确保您有权访问 Excel 文件。通常,如果您使用保存在另一个驱动器上的文件而不是安装 Windows 的文件进行测试(例如 E:\,如果 Windows 在 C:\ 上)。

谢谢,原来我缺少对 System.Drawing nuget

的引用