Kapil_237145 Ответов: 0

Когда я конвертирую excel в текст с помощью метода excel saveas, то дополнительные двойные кавычки приходят со строковыми (текстовыми) данными, для этого


Привет ,

Когда я конвертирую excel в текст с помощью метода excel saveAs, то дополнительные двойные кавычки приходят со строковыми (текстовыми) данными, для этого

Проблема после того, как мы сделали google, мы нашли одно решение, чтобы использовать .prn (файл принтера), а затем проблема решена, но это файл принтера, поэтому данные вырезаны.полные данные не поступают в файл принтера. Я так и не нашел правильного решения.
public static void GetExcelToText(string sFilePath)
        {
            Excelintrop.Application appExl = null;
            Excelintrop.Workbook workbook = null;
            Excelintrop.Worksheet nwSheet = null;
            List<string> filePaths = null;
            string temPath = sFilePath;
            try
            {
                filePaths=new List<string>();
                appExl = new Excelintrop.Application();
                appExl.DisplayAlerts = false;
                workbook = appExl.Workbooks.Open(sFilePath, Missing.Value, Missing.Value, Missing.Value,
                                                  Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                                                  Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                                                  Missing.Value, Missing.Value, Missing.Value);
                
                for (int i = 1; i <= workbook.Sheets.Count;i++)
                {
                    temPath = Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location)+ Path.DirectorySeparatorChar + Guid.NewGuid().ToString() + ".prn";
                    nwSheet = (Excelintrop.Worksheet)workbook.Sheets[i];
                                       
                    Excelintrop.Range rang = nwSheet.UsedRange;
                    
                    rang.Cells.WrapText = true;
                    rang.Columns.AutoFit();

                    nwSheet.SaveAs(Filename: temPath, FileFormat: Excelintrop.XlFileFormat.xlTextPrinter, CreateBackup:false);                   
                    filePaths.Add(temPath);
                }
                workbook.Close();
                appExl.Workbooks.Close();
                appExl.Quit();

                using (var output = new StreamWriter(Path.ChangeExtension(sFilePath, ".txt")))
                {
                   foreach(var path in filePaths)
                    {
                        using (var input = new StreamReader(path))
                        {
                            output.WriteLine(input.ReadToEnd());
                        }
                    }
                }
              
            //File.Delete(Path.ChangeExtension(sFilePath, ".txt"));
            File.Move(Path.ChangeExtension(sFilePath, ".prn"), Path.ChangeExtension(sFilePath, ".txt"));
            File.Delete(Path.ChangeExtension(sFilePath, ".prn"));
            }            
            catch (Exception ex)
            {
                Log.Debug("ProLaw.Utils: OfficeExtensionFunctions: GetExcelToText" + ex.Message);
            }
            finally
            {
                foreach (var path in filePaths)
                {
                    File.Delete(path);
                }
                filePaths = null;
                File.Delete(Path.ChangeExtension(sFilePath, ".xls"));
                appExl.Workbooks.Close();
                appExl.Quit();
            }
        }


каков наилучший подход к получению полных данных без двойных кавычек?

Спасибо,

Капил

Что я уже пробовал:

Я пробую вышеупомянутый подход.

Richard MacCutchan

Почему вы экономите как xlTextPrinter а потом изменить расширение с .prn на .txt? Воспользуйся xlTextWindows для начала вам не понадобится вся эта избыточная обработка.

eddieangel

Я решительно против использования Excel interop для чего-либо, так как мне не нравится зависимость от Microsoft Office, есть и лучшие решения. Тем не менее, пробовали ли вы удалить двойные кавычки из входных данных?

выход.WriteLine(input.ReadToEnd (). Replace("\"","");

0 Ответов