C# Excel.Application.workbooks.open时报错

羽同学丶 2016-11-01 11:30:19
求助大神!!!
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
Workbook wBook = null;
Worksheet wSheet = null;
object oMissiong = System.Reflection.Missing.Value;
wBook = app.Workbooks.Open(excelFileName, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong,
oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong);
wSheet = wBook.Worksheets.get_Item(1);//读取第一张表

我在执行到app.Workbooks.Open时就报错,报错提示是

服务器出现意外情况。 (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT))。。

求解!!!谢谢
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
Workbook wBook = null;
Worksheet wSheet = null;
object oMissiong = System.Reflection.Missing.Value;
wBook = app.Workbooks.Open(excelFileName, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong,
oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong);
wSheet = wBook.Worksheets.get_Item(1);//读取第一张表
...全文
532 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
stherix 2016-11-01
  • 打赏
  • 举报
回复
office没有正确安装(比如某些破解版,或者是多个office版本冲突)就有可能出现这种情况 访问excel建议使用NPOI,开源免费,功能和速度都比用com访问excel强
stherix 2016-11-01
  • 打赏
  • 举报
回复
引用 2 楼 fanlibin0623 的回复:
[quote=引用 1 楼 stherix 的回复:] office没有正确安装(比如某些破解版,或者是多个office版本冲突)就有可能出现这种情况 访问excel建议使用NPOI,开源免费,功能和速度都比用com访问excel强
NPOI我有考虑过!!但是我想问一下,NPOI可以把Excel转换成txt文件吗??我使用Microsoft.Office.Interop.Excel就是想用Worksheet.saveAs(DesstrPath, XlFileFormat.xlUnicodeText, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, XlSaveAsAccessMode.xlNoChange, oMissiong, oMissiong); [/quote] 直接保存为txt的功能是没有,毕竟这样会丢掉大量的格式以及其他内容,而只能保存文本内容 不过自己很容易就可以用NPOI提供的方法遍历表格并保存为csv之类的文本格式,而且excel还可以打开这个文件
羽同学丶 2016-11-01
  • 打赏
  • 举报
回复
引用 1 楼 stherix 的回复:
office没有正确安装(比如某些破解版,或者是多个office版本冲突)就有可能出现这种情况 访问excel建议使用NPOI,开源免费,功能和速度都比用com访问excel强
NPOI我有考虑过!!但是我想问一下,NPOI可以把Excel转换成txt文件吗??我使用Microsoft.Office.Interop.Excel就是想用Worksheet.saveAs(DesstrPath, XlFileFormat.xlUnicodeText, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, XlSaveAsAccessMode.xlNoChange, oMissiong, oMissiong);
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,534

社区成员

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

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

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