2017-02-24 73 views
0

我曾尝试阅读文本文件和XML文件与File Class,它工作正常。我想知道我们是否可以读取Excel或Word或其他类型。什么类型的文件可以用文件类C#读取?

var str = File.ReadAllLines("Test.xlsx"); 

调试时,海峡显示特殊字符。
希望我已经提出了明确的问题。诚挚的建议
如果有适当的评论,以改善:),欢迎垂直投票。 在此先感谢。

+2

与File.ReadAllLines你只从文件中获得文本,所以答案是:每个文件都带有纯文本:) –

+2

你可以看看[EPPlus](https://www.nuget.org/packages/ EPPlus)如果你需要使用excel文件。 –

+0

谢谢@MaksimSimkin – Hitsa00

回答

1

XML和文本文件是纯文件,其中文本显示在屏幕上,就像它们在文件中一样。这就是为什么File.ReadAllLines工作。

用Excel,它是不同的。它在文件中编码了逻辑,当被特殊程序读取(读取MSExcel)时,它将其解码并在屏幕上正确显示。

把它看作是由专门定义的程序读取的编码或混淆文件来解密它们。

要阅读DOTNET的Excel文件,你可以用它们被转移到DataSet/DataTable这样Read Excel File in C# (Example)

+0

您不需要与'xlsx'文件进行互操作,“只需”Open XML或EPPlus。该文件是一个压缩的XML文件包,因此一个*可以*将内容视为文本。它不是*混淆的* - 它是一个明确的格式 –

+0

同意一个观点,但即使该文件是以xml打开的,它也没有任何意义。有意义的你需要MsExcel或者DataSet/DataTable。 –

+0

这只适用于旧的'xls'格式。您可以使用[Microsoft的Open XML SDK](https://msdn.microsoft.com/zh-cn/library/office/gg575571)将'xlsx'作为Excel电子表格读取。aspx)或任何理解格式的库。之后,如果你愿意,[你可以用LINQ查询](https://epplus.codeplex.com/wikipage?title=LinqExample)。 Open Office XML标准的重点在于您不需要Excel或OLEDB来读取文件 –

1

随着File.ReadAllLines可以阅读文本文件(和XML是-as我们知道 - 以及文本文件)。

当然,函数也会读取其他类型的数据文件 - 但是不会得到有意义的结果。二进制数据被解释为字符。这不适用于Office文件。

1

The MSDN documentation for File.ReadAllLines()指出:

该方法尝试自动检测一个文件的基于字节顺序标记的存在的编码。编码格式UTF-8和UTF-32(包括big-endian和little-endian)都可以被检测到。

因此,您可以使用其支持的其中一种UTF编码来读取文本文件。要读取使用其他编码的文件(例如Windows ANSI,非拉丁文本),应使用采用Encoding参数的超载。