导入Excel到数据库时出现“外部表不是预期格式”的错误信息,针对这个问题开始很纠结,如果导入的Excel是新建的就不会出现该问题,如果是在导出数据的基础上进行导入,将会出现这样的错误提示,也许很多朋友会问这是为什么呢?

  因为你的Excel是从程序中导出的并且是使用 Response的方式直接把html代码输出到Excel中的 ,其实这是可以解决的,导出的时候使用Excel操作Api来导出就是标准格式,第二种方法在导入的时候启动Excel.exe进程,这样将会有一个新的Excel.

  下面我贴出第二种方法的代码:

View Code

1 #region ====Import Vendor按钮=====
2 [AjaxMethod]
3 public void UploadVendorData_Click( object sender, AjaxEventArgs e)
4 {
5 // 上传的文件保存在服务器端的路径
6   string fullFileName = this .FileUploadFieldSelectVendor.PostedFile.FileName;
7 // 验证文件类型
8   if ( this .CheckFileType(fullFileName))
9 {
10 string serverPath = Server.MapPath( " UpLoad/ " ) + fullFileName.Substring(fullFileName.LastIndexOf( " \\ " ) + 1 );
11
12 // 保存文件到服务器
13   this .FileUploadFieldSelectVendor.PostedFile.SaveAs(serverPath);
14
15 // 导入到DataSet
16   DataSet myDataSet = new DataSet();
17
18 Microsoft.Office.Interop.Excel.Application myExcel = new Microsoft.Office.Interop.Excel.Application(); // 创建一个Excel对象(同时启动EXCEL.EXE进程)
19
20 Microsoft.Office.Interop.Excel._Workbook workbook = (Microsoft.Office.Interop.Excel._Workbook)(myExcel.Workbooks.Add(serverPath)); // 添加新工作簿
21 Microsoft.Office.Interop.Excel.Sheets sheets = workbook.Worksheets;
22
23 // 导入数据临时存入DataSet
24 if ( this .ImportExcelToDataSet1(serverPath, ref myDataSet,sheets))
25 {
26 #region =========必须有释放Excel=======
27 this .ExcelDispose(myExcel);
28 #endregion
29
30 // 校验数据合法性
31 if ( this .CheckVendorDataSet(myDataSet))
32 {
33 // 插入临时表
34 this .projectResourceLogic.AddVendorResource(myDataSet.Tables[ 0 ], Request.QueryString[ " ProjectID " ].ToString(), this .CurrentUserInfo.UserID.ToString());
35
36 FileUploadFieldSelectVendor.Reset();
37
38 this .BindStoreVenderResourceList(Request.QueryString[ " ProjectID " ].ToString());
39
40 Ext.Msg.Alert( " Tip " , this .GetMessage( " MSG00117 " )).Show();
41
42 this .WindowUploadVendorData.Hide();
43 }
44 }
45
46 // 从服务器删除文件
47 System.IO.File.Delete(serverPath);
48 }
49 }
50
51
52 #endregion

2.  导入数据临时存入Dataset方法:

View Code

1 #region ====导入数据临时存入Dataset(在导出的模板中修改再导入)======
2 /// <summary>
3 /// 获得Excel文件放入dataset
4 /// </summary>
5 /// <param name="filepath"></param>
6 /// <returns></returns>
7 private bool ImportExcelToDataSet1( string filepath, ref DataSet myDataSet, Microsoft.Office.Interop.Excel.Sheets sheets)
8 {
9 bool success = true ;
10 try
11 {
12 for ( int i = 0 ; i < sheets.Count; i ++ )
13 {
14 Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)sheets.get_Item( 1 );
15 DataTable dt = new DataTable();
16 string cellContent;
17 int iRowCount = worksheet.UsedRange.Rows.Count;
18 int iColCount = worksheet.UsedRange.Columns.Count;
19 Microsoft.Office.Interop.Excel.Range range;
20 for ( int iRow = 1 ; iRow <= iRowCount; iRow ++ )
21 {
22 DataRow dr = dt.NewRow();
23
24 for ( int iCol = 1 ; iCol <= iColCount; iCol ++ )
25 {
26 range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[iRow, iCol];
27
28 cellContent = (range.Value2 == null ) ? "" : range.Text.ToString();
29
30 if (iRow == 1 )
31 {
32 dt.Columns.Add(cellContent);
33 }
34 else
35 {
36 dr[iCol - 1 ] = cellContent;
37 }
38 }
39
40 if (iRow != 1 )
41 dt.Rows.Add(dr);
42 }
43 myDataSet.Tables.Add(dt);
44 }
45 }
46 catch (Exception ex)
47 {
48 Ext.MessageBox.Alert( " Error " , " The excel format is wrong.please download from the not filled timesheet page first.\n " + ex.Message).Show();
49 success = false ;
50 }
51
52 return success;
53 }
54 #endregion

3. 释放Excel

View Code

1 #region ==========释放Excel===========
2 /// <summary>
3 /// 关闭Excel进程
4 /// </summary>
5 /// <param name="CurExcel"></param>
6 protected void ExcelDispose(Microsoft.Office.Interop.Excels.Application CurExcel)
7 {
8 try
9 {
10 if (CurExcel != null )
11 {
12 CurExcel.Workbooks.Close();
13 CurExcel.Quit();
14 System.Runtime.InteropServices.Marshal.ReleaseComObject(CurExcel);
15 CurExcel = null ;
16 // 销毁Excel对象
17 GC.Collect();
18
19 }
20 }
21 catch (Exception ex)
22 {
23 Ext.Msg.Alert( " Excel disponse error: " , ex.ToString()).Show();
24 }
25 }
26 #endregion

转载于:https://www.cnblogs.com/mystar/archive/2011/02/24/1964030.html

导入Excel至数据库中 外部表不是预期格式错误信息相关推荐

  1. 导入EXCEL报错:外部表不是预期的格式错误、文件格式和扩展名不匹配,文件可能已损坏或不安全的解决方法

    开发环境:C# + EXCEL2003 + VS2008 问题: 当使用如下代码从gridview导出数据到excel后,无法从excel取出数据,具体如下: 1.原使用的代码: protected ...

  2. SQL导入Excel报错:外部表不是预期的格式

    背景:sql server 2019. Excel创建:WPS,格式.xlsx 导入选项,选择Microsoft Excel 97-2003: 解决方法: 打开要导入的Excel,不要关,再次打开导入 ...

  3. sql server 2008:导入excel,出现“外部表不是预期格式“错误

    原因:猜测是因为某些系统导出的excel表自带某些格式(我出现问题的是海信商业系统导出的数据). 解决方法:简单粗暴,将表格另存为excel97-2003版本后,再导入,问题解决.

  4. 导入Excel至数据库中 quot;外部表不是预期格式quot;错误信息

    导入Excel到数据库时出现"外部表不是预期格式"的错误信息,针对这个问题开始很纠结,如果导入的Excel是新建的就不会出现该问题,如果是在导出数据的基础上进行导入,将会出现这样的 ...

  5. c#中导入excel至sql server时出现“外部表不是预期格式”

    导入excel至sql server时出现"外部表不是预期格式"的排查: 首先要注意有两个字符串,一个用于初始化SqlConnection,一个用于初始化OleDbConnecti ...

  6. Excel导入数据库出现“外部表不是预期的格式”错误的解决方法

    Excel导入数据库出现"外部表不是预期的格式"错误的解决方法 参考文章: (1)Excel导入数据库出现"外部表不是预期的格式"错误的解决方法 (2)http ...

  7. bartender外部表不是预期格式_批量合并Excel数据时“外部表不是预期格式”或“文件包含损坏数据”的两种情况...

    很多朋友在用Power Query合并(汇总)Excel数据时,碰到过"DataFormat.Error:外部表不是预期格式"或"DataFormat.Error:文件包 ...

  8. mysql外部表不是预期格式_批量Excel数据导入Oracle数据库 导入excel错误:外部表不是预期的格式 解决方案...

    在asp.net网站中导出Excel文件后,再把文件导入到数据库中. 读取Excel文件时,打开连接出错. 错误为:外部表不是预期的格式 解决:检查了一下,导出的Excel是标准文件不是html,没错 ...

  9. oracle数据库表excel文件位置,“如何将excel表格数据导入到oracle数据库对应的表中?“数据库文件导入excel表格数据库中...

    如何实现Excel表格自动导入到数据库 库?是什么数据库?sql?access?mysql?我以sql2008为例子 1.打开SQL Server Management Studio-任务-数据 2. ...

最新文章

  1. linux运维/自动化开发__目录
  2. 外国人评价鸿蒙os2.0发布,鸿蒙os2.0发布以来广获好评,却遭到部分网友指责是披着羊皮的狼...
  3. 什么工具可以去视频去水印
  4. 上传图片动态预览(兼容主流浏览器)
  5. ijcai statistics
  6. nodejs从服务器返回静态文件,nodejs静态资源服务器
  7. 解决codeforces访问慢的问题
  8. bookstore项目学到的对象
  9. Mac电脑用CrossOver安装的Windows软件位置
  10. 开篇 | 揭秘 Flink 1.9 新架构,Blink Planner 你会用了吗?
  11. 初学者求经典java学习视频
  12. i3wm i3status状态栏实时显示网速
  13. 车辆运动学和动力学模型
  14. 使用word代码域自动为图表 标号
  15. oracle智能便携投影机,小火投影S10评测:让人眼前一亮的便携智能投影仪
  16. excel中快速输入打勾
  17. 个人对于IT开发型技能段位的划分,我只是一个小小铂金,你什么段位了!
  18. 相似度(距离计算)汇总
  19. 11个你不应该错过的JavaScript库
  20. PHP对接企业微信审批回调

热门文章

  1. VS2010开发体验系列之二 - 语言C#4.0
  2. 什么是Watchdog?
  3. Doves and bombs UVA - 10765
  4. CF1326E Bombs(思维题)
  5. Linux - Unix环境高级编程(第三版) 代码编译
  6. Visual Studio 2008 官方破解版 正版cd key
  7. int与Integer、new Integer()
  8. 闲扯测试工程师之发展(觉得不错,拿来与大家分享)
  9. python3 学习之路1
  10. 硕士论文查重率是多少?