对于由File.Create(fileName)创建的Excel文件,虽然格式是Excel文件,但是并不是标准的Excel文件,用Ado.net对这种文件连接操作时,会提示“外部表不是预期的格式”错误。这种文件用文本打开时和txt的格式是一样的。
对于提示“外部表不是预期的格式”错误的Excel文件的处理解决办法,用文件读取方式读入DataTable,再做处理
//读文件并存在内存表中
private DataTable ReadFile(string fileName, int columnNum)
{
DataTable dataRead = createDataTable(columnNum);
if (File.Exists(fileName))
{
string strRead;//存储读取的文件数据
Encoding encoding = Encoding.GetEncoding("GB18030");
try
{
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
StreamReader sr = new StreamReader(fs, encoding);
strRead = sr.ReadToEnd();
sr.Close();
fs.Close();
//导入内存DataTable
string[] readArray = strRead.Split(new char[] { '/n' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string row in readArray)
{
string[] column = row.Replace(" ", "").Replace("/r","").Split(new char[] { '/t' }, StringSplitOptions.RemoveEmptyEntries);
DataRow dr = dataRead.NewRow();
for (int i = 0; i <column.Length; i++)
{
dr[i] = column[i];
}
dataRead.Rows.Add(dr);
}
}
catch (Exception ex)
{
Console.Write(ex.ToString());
}
}
else
{
MessageBox.Show("缺少档案文件");
}
return dataRead;
}