Workbooks.open打不开xlsx文件,请问这是怎么回事

XiaoYi96 2017-07-19 05:21:02
打开.xls文件可以打开,但是xlsx时就会爆下面的错。我电脑上装的execl是2013版本,请问该如何解决?

Excel 无法打开文件“XXXXXXXX20170719171542372.xlsx”,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配
下面是代码
protected Microsoft.Office.Interop.Excel.Application objExcelApp;//定义Excel Application对象
private Microsoft.Office.Interop.Excel.Workbooks objExcelWorkBooks;//定义Workbook工作簿集合对象
protected Microsoft.Office.Interop.Excel.Workbook objExcelWorkbook;//定义Excel workbook工作簿对象
string sourceFile = "路径/XXXXXXXX" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xlsx";

objExcelApp = new Microsoft.Office.Interop.Excel.Application();
objExcelWorkBooks = objExcelApp.Workbooks;
objExcelWorkbook = objExcelWorkBooks.Open(sourceFile, 0, false, 5, "", "", true,//第一个参数为文件名
Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, true, false, 0, true, false, false);
...全文
2387 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lwq222121 2017-07-20
  • 打赏
  • 举报
回复
还是用npoi吧,office的现在都很少用了,将来部署实施也麻烦
XiaoYi96 2017-07-20
  • 打赏
  • 举报
回复
引用 3 楼 Libby1984 的回复:
引用 2 楼 XiaoYi96 的回复:
[quote=引用 1 楼 Libby1984 的回复:] 你引用的Excel的版本太低,xls是2003的格式,2007以后的后缀名都是xlsx。你看下你项目中添加引用的Excel是不是9.0.0.0及以上,最好是12.0.0.0的
我引用的版本是12.0.0.0呀,就算我换上14.0.0.0也还是出现这种情况
双击用Excel能打开吗?[/quote]如果我写的是xlsx的话,程序直接报一楼的错,当我写xls的话可以打开,但是打开时会有提示,文件格式和扩展名不匹配。
XiaoYi96 2017-07-20
  • 打赏
  • 举报
回复
引用 5 楼 ilikeff8 的回复:
https://zm8.sm-tc.cn/?src=l4uLj8XQ0IiIiNGdlp6RnJqRmNGckdCvjZCYjZ6SkpaRmNCcjJeejY%2FQzc%2FOy87P0MvKyMrP0ZeLkg%3D%3D&uid=0fba8e2c44d5d8885cb770b2908b375e&hid=0574fde78db0e55c45783c34ca25a500&pos=5&cid=9&time=1500461005285&from=click&restype=1&pagetype=0000004000000402&bu=news_natural&query=c%23+excel+npoi+xlsx&mode=&v=1&uc_param_str=dnntnwvepffrgibijbprsvdsdichei
大神,当我添加Microsoft Excel 15.0 Object Library”这个引用,为什么还是提示我IWorkbook缺少引用啊
ilikeff8 2017-07-19
  • 打赏
  • 举报
回复
https://zm8.sm-tc.cn/?src=l4uLj8XQ0IiIiNGdlp6RnJqRmNGckdCvjZCYjZ6SkpaRmNCcjJeejY%2FQzc%2FOy87P0MvKyMrP0ZeLkg%3D%3D&uid=0fba8e2c44d5d8885cb770b2908b375e&hid=0574fde78db0e55c45783c34ca25a500&pos=5&cid=9&time=1500461005285&from=click&restype=1&pagetype=0000004000000402&bu=news_natural&query=c%23+excel+npoi+xlsx&mode=&v=1&uc_param_str=dnntnwvepffrgibijbprsvdsdichei
ilikeff8 2017-07-19
  • 打赏
  • 举报
回复 1
用 npoi
  • 打赏
  • 举报
回复
引用 2 楼 XiaoYi96 的回复:
引用 1 楼 Libby1984 的回复:
你引用的Excel的版本太低,xls是2003的格式,2007以后的后缀名都是xlsx。你看下你项目中添加引用的Excel是不是9.0.0.0及以上,最好是12.0.0.0的
我引用的版本是12.0.0.0呀,就算我换上14.0.0.0也还是出现这种情况
双击用Excel能打开吗?
XiaoYi96 2017-07-19
  • 打赏
  • 举报
回复
引用 1 楼 Libby1984 的回复:
你引用的Excel的版本太低,xls是2003的格式,2007以后的后缀名都是xlsx。你看下你项目中添加引用的Excel是不是9.0.0.0及以上,最好是12.0.0.0的
我引用的版本是12.0.0.0呀,就算我换上14.0.0.0也还是出现这种情况
  • 打赏
  • 举报
回复
你引用的Excel的版本太低,xls是2003的格式,2007以后的后缀名都是xlsx。你看下你项目中添加引用的Excel是不是9.0.0.0及以上,最好是12.0.0.0的
private void Save2Excel() { //string file = "F:\\11\\ck.xlsx"; //string path = "F:\\11\\excel\\"; string time = DateTime.Now.ToString("yyyyMMdd"); string file = System.Windows.Forms.Application.StartupPath + "\\ck.xlsx"; string path = System.Windows.Forms.Application.StartupPath + "\\excel\\"; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } string saveName1 = path + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx"; excel = new CCExcel(file,saveName1); excel.Exceldata(); } private void textBox1_TextChanged(object sender, EventArgs e) { Form1.name = textBox1.Text.ToString(); } private void Form1_Load(object sender, EventArgs e) { comboBox1.Text = 11.ToString(); comboBox2.Text = 100.ToString(); } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { Form1.comB1 = comboBox1.Text.ToString(); } private void comboBox2_SelectedIndexChanged(object sender, EventArgs e) { Form1.comB2 = comboBox2.Text.ToString(); } } public class CCExcel { public Excel.Application appExcel; public Excel.Workbooks wbs; public Excel.Workbook wb; public Excel.Worksheets wss; public Excel.Worksheet ws; private string fileName; private string saveName; public CCExcel(string fileName,string saveName) { // //TODO: 在此处添加构造函数逻辑 // this.fileName = fileName; this.saveName = saveName; } public void Exceldata() { Create(); //Open(fileName); Data2Excel(); Save(saveName); //Save(wb,saveName); //appExcel.ActiveWorkbook.SaveCopyAs(fileName); //判断当前激活的表,并保存这个表。否则,保存时会弹出“是否保存Sheet1.xlsx”的对话框 wb.Close(Type.Missing, Type.Missing, Type.Missing); wbs.Close(); appExcel.Quit(); wb = null; wbs = null; appExcel = null; GC.Collect(); } private void Create()//创建一个Excel对象 { appExcel = new Excel.Application(); wbs = appExcel.Workbooks; wb = wbs.Add(true); //ws = (Excel.Worksheet)wb.ActiveSheet;//这是一个只读sheets集合 //Excel.Worksheet worksheet = wb.ActiveSheet as Excel.Worksheet;//这也是一个只读sheets集合 //Excel.Worksheet ws = (Worksheet)wb.Worksheets[1];//创建工作页sheet单页 ws = wb.Worksheets[1] as Worksheet; //第一个sheet页 ws.Name = "ck"; //这里修改sheet名称 } public void Open(string fileName) { appExcel = new Excel.Application(); wbs = appExcel.Workbooks; wb = wbs.Add(fileName); wb = wbs.Open(fileName,Type.Missing,Type.Missing,Type.Missing,Type.Missing, Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing, Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing); }

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧