Открытие .dat (файл с разделителями табуляции) в Excel, сохранение в формате .xls - PullRequest
2 голосов
/ 06 марта 2012

Я пытаюсь открыть файл .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);

Ответы [ 4 ]

2 голосов
/ 09 марта 2012

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

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);

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

2 голосов
/ 06 марта 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 #?Просто предположение.

0 голосов
/ 06 марта 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;
0 голосов
/ 06 марта 2012

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

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

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

...