Открытие .dat (файл с разделителями табуляции) в Excel, сохранить как .xls

Я пытаюсь открыть файл .dat в Excel, разделенный табуляцией, а затем сохранить его как файл .xls.

Пока я могу прочитать файл и сохранить его как файл .xls, но по какой-то причине все значения находятся в первом столбце, и он не разделяет их табуляцией.

(Если я открою файл в Excel без своей программы, он будет отлично разделен табуляцией)

Это две строки кода, которые я использую для открытия и повторного сохранения файла.

xlWorkBook = xlApp.Workbooks.Open(f, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);  
xlWorkBook.SaveAs(filename + ".xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);

person Kyle Uithoven    schedule 06.03.2012    source источник


Ответы (4)


Исправление для этого вопроса:

xlWorkBook = xlApp.Workbooks.Open (f, 0, true, 5, «», «», true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, «\ t», false, false, 0, true, 1 , 0); xlWorkBook.SaveAs (имя файла + ".xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue), misValue, misValue, misValue);

В методе xlApp.Worksbooks.Open () четвертым аргументом является «Формат», который, если вы используете значение «1», будет считать, что файл разделен табуляцией, и соответственно откроет его.

person Kyle Uithoven    schedule 08.03.2012

Я не использую C #, но думаю, вам может понадобиться что-то вроде метода Workbooks.OpenText, подробно описанного здесь: http://msdn.microsoft.com/en-us/library/bb223513%28v=office.12%29.aspx

Он позволяет указывать разделители и т. Д.

Что-то вроде этого:

xlWorkBook = xlApp.Workbooks.OpenText (filename:="DATA.TXT", dataType:=xlDelimited, tab:=True);

Это из справочника разработчиков Excel 2007, но, может быть, есть аналогичный метод в C #? Просто предположение.

person Marc    schedule 06.03.2012
comment
Это не работает, оно не только не возвращает xlWorkBook (что нарушит приведенный выше код), но и не разделяет текст и не помещает их в разные столбцы. - person Kyle Uithoven; 06.03.2012

Как насчет использования FileHelpers?

Я много использовал этот подход и считаю его очень хорошей библиотекой.

Он обрабатывает файлы с разделителями и файлы фиксированной длины, и вы можете выполнять обратную запись в Excel с помощью класса ExcelStorage.

person Simon Whittemore    schedule 06.03.2012

Это могло сработать:

using Excel = Microsoft.Office.Interop.Excel;
using Microsoft.Office;
using Microsoft.Office.Core;

        Excel.Application xlApp;
        Excel.Workbook xlWorkBook;
        Excel.Worksheet xlWorkSheet;
        object misValue = System.Reflection.Missing.Value;
        xlApp = new Excel.Application();
        xlApp.Workbooks.OpenText(@"c:\data.txt", Microsoft.Office.Interop.Excel.XlTextParsingType.xlDelimited);
        xlApp.Visible = true;
person Andrew    schedule 06.03.2012