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