簡體   English   中英

使用 Syncfusion.XlsIO 將 .xlsx 文件轉換為 .csv - Null 引用異常

[英]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 的引用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM