在Excel中打开.dat(制表符分隔文件),另存为 .xls。

3

我正在尝试在Excel中打开一个以制表符分隔的.dat文件,并将其保存为.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个回答

3
这个问题的解决方法如下:

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

在xlApp.Workbooks.Open()方法中,第四个参数是“格式”,如果您使用值“1”,它将假定文件是制表符分隔的,并相应地打开它。

2
我不使用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#中有类似的方法?这只是一个猜测。

这不是有效的代码,它不仅不返回 xlWorkBook(这会破坏您上面的代码),而且它也没有将文本分隔并放入不同的列中。 - Kyle Uithoven

0

这应该可以工作:

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

使用FileHelpers怎么样?

我经常使用这种方法,发现它是一个非常好的库。

它可以处理分隔符和固定长度的文件,并且您可以使用ExcelStorage类将数据写回Excel。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接