解析文件到DataTable
Parse file to DataTable
我必须将扩展名为 .xls
的文件解析为 DataTable
对象。似乎文件是文本 table,在 cp866
编码中具有固定的列长度,但我无法使用适当的连接字符串读取它。
我可以使用 MS Excel
成功打开此类文件,并且在打开时显示 正在打开 DBF 4。下面的例子是尝试读取简单文本这样的文件,您可能会注意到某些字符无法识别。
有人可以帮忙解决这个问题吗?
假设它是损坏的 dbf4
文件。您可以尝试使用 Microsoft.Office.Interop.Excel
package:
阅读它
Application app = new Application { Visible = false };
Workbook wb = app.Workbooks.Open(fileFullName, UpdateLinks: 0, ReadOnly: true, CorruptLoad: 1);
Worksheet ws = wb.Worksheets.Item[1];
Range r = ws.UsedRange;
object[,] va = (object[,])r.Value2;
int rowLen = va.GetLength(0);
int colLen = va.GetLength(1);
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= rowLen; i++)
{
object[] row = new object[colLen];
for (int j = 1; j <= colLen; j++)
{
row[j - 1] = va[i, j];
}
sb.AppendLine(string.Join(";", row));
}
string result = sb.ToString();
wb.Close(false, fileFullName, null);
Marshal.ReleaseComObject(wb);
app.Quit();
我必须将扩展名为 .xls
的文件解析为 DataTable
对象。似乎文件是文本 table,在 cp866
编码中具有固定的列长度,但我无法使用适当的连接字符串读取它。
我可以使用 MS Excel
成功打开此类文件,并且在打开时显示 正在打开 DBF 4。下面的例子是尝试读取简单文本这样的文件,您可能会注意到某些字符无法识别。
有人可以帮忙解决这个问题吗?
假设它是损坏的 dbf4
文件。您可以尝试使用 Microsoft.Office.Interop.Excel
package:
Application app = new Application { Visible = false };
Workbook wb = app.Workbooks.Open(fileFullName, UpdateLinks: 0, ReadOnly: true, CorruptLoad: 1);
Worksheet ws = wb.Worksheets.Item[1];
Range r = ws.UsedRange;
object[,] va = (object[,])r.Value2;
int rowLen = va.GetLength(0);
int colLen = va.GetLength(1);
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= rowLen; i++)
{
object[] row = new object[colLen];
for (int j = 1; j <= colLen; j++)
{
row[j - 1] = va[i, j];
}
sb.AppendLine(string.Join(";", row));
}
string result = sb.ToString();
wb.Close(false, fileFullName, null);
Marshal.ReleaseComObject(wb);
app.Quit();