对于连接Excel时“外部表不是预期的格式”错误的处理

时间:2021-03-07 20:33:04

对于由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;

        }