對於由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;
}