请高人看下这段代码 c# 在创建excel sheet时为什么会失败?

wangjun31 2007-05-29 10:16:24

bool exist = System.IO.File.Exists(@"C:\ConfigRecord.xls");

if(exist)
{
System.IO.File.Delete(@"C:\ConfigRecord.xls");
}

object missing = System.Reflection.Missing.Value;

Excel.ApplicationClass myExcel = new Excel.ApplicationClass();

Excel._Workbook xBk ; //工作薄

xBk = myExcel.Workbooks.Add(true);


xBk.SaveAs(@"C:\ConfigRecord.xls",missing,missing,
missing,missing,missing,Excel.XlSaveAsAccessMode.xlShared,
missing,missing,missing,missing,missing);


myExcel.Quit();


OleDbConnection excelConn = new OleDbConnection();
excelConn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\ConfigRecord.xls; Extended Properties=Excel 8.0;";

excelConn.Open();

OleDbCommand oleExcelCommand=new OleDbCommand ();
oleExcelCommand.Connection =excelConn;



string basicInfotableName;
basicInfotableName="deviceInfo_BaseInfo";
sql="drop table " + basicInfotableName + ";";
oleExcelCommand.CommandText=sql;
try
{
oleExcelCommand.ExecuteNonQuery();
}
catch(System.Data.OleDb.OleDbException ex)
{

}

sql="create table "+basicInfotableName+" (DeviceType char, WholeDeviceCode char primary key";
sql=sql+");";
oleExcelCommand.CommandText=sql;

try
{
oleExcelCommand.ExecuteNonQuery();
}
catch(System.Data.OleDb.OleDbException ex)
{
MessageBox.Show(this,"创建数据库失败","提示信息",MessageBoxButtons.OK,MessageBoxIcon.Information);
}

总是提示“创建数据库失败”
说未找到表deviceInfo_BaseInfo
...全文
391 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
AOCOC 2007-05-29
  • 打赏
  • 举报
回复
你看看你之前执行的删除操作是否成功了..
cq_lqj 2007-05-29
  • 打赏
  • 举报
回复
摘录:《程序员秘书》--源代码--目录及文件--读取Excel文件--生成一个Exel文件
你直接用就行了
立即成为编程经验丰富的程序员不是梦,详见:http://www.psec.net.cn

private void button1_Click(object sender, EventArgs e)
{
try
{
SaveFileDialog SaveFileDialog1 = new SaveFileDialog();
SaveFileDialog1.Filter = "Excel文件(*.xls)|*.xls";
if (SaveFileDialog1.ShowDialog() == DialogResult.OK)
{
string[,] myData = {
{"车牌号","类 型","品 牌","型 号","颜 色","附加费证号","车架号"},
{"浙KA3676","危险品","货车","铁风SZG9220YY","白","1110708900","022836"},
{"浙KA4109","危险品","货车","解放CA4110P1K2","白","223132","010898"},
{"浙KA0001A","危险品","货车","南明LSY9190WS","白","1110205458","0474636"},
{"浙KA0493","上普货","货车","解放LSY9190WS","白","1110255971","0094327"},
{"浙KA1045","普货","货车","解放LSY9171WCD","蓝","1110391226","0516003"},
{"浙KA1313","普货","货车","解放9190WCD","蓝","1110315027","0538701"},
{"浙KA1322","普货","货车","解放LSY9190WS","蓝","24323332","0538716"},
{"浙KA1575","普货","货车","解放LSY9181WCD","蓝","1110314149","0113018"},
{"浙KA1925","普货","货车","解放LSY9220WCD","蓝","1110390626","00268729"},
{"浙KA2258","普货","货车","解放LSY9220WSP","蓝","111048152","00320"}};

Excel.Application m_Excel = new Excel.Application();//创建一个Excel对象(同时启动EXCEL.EXE进程)
m_Excel.SheetsInNewWorkbook = 2;//工作表为两个
Excel._Workbook m_Book = (Excel._Workbook)(m_Excel.Workbooks.Add(Missing.Value));//添加新工作簿
Excel._Worksheet m_Sheet = (Excel._Worksheet)(m_Book.Worksheets.get_Item(1));//读取工作表1
m_Sheet.Name = "车牌表";//给工作表1命名
m_Sheet.Cells[1, 4] = "普通报表";//第一行为报表名称
for (int i = 0; i < 11; i++)//逐行写入数据
{
for (int j = 0; j < 7; j++)
{
m_Sheet.Cells[2 + i, 1 + j] = "'" + myData[i, j];//以单引号开头,表示该单元格为纯文本
}
}
m_Book.SaveAs(SaveFileDialog1.FileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
m_Book.Close(false, Missing.Value, Missing.Value);
m_Excel.Quit();
m_Book = null;
m_Sheet = null;
m_Excel = null;
MessageBox.Show(this, "Excel文件已经生成。", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch (Exception Mye)
{
MessageBox.Show(this, Mye.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
GC.Collect();//强制垃圾回收,否则EXCEL.EXE进程不能及时退出
}
Qim 2007-05-29
  • 打赏
  • 举报
回复
单步调一下.把相应的sql语句考到SQL2000里面试试,可以成功执行吗?
codeangel 2007-05-29
  • 打赏
  • 举报
回复
如果文件生成了,你直接用企业管理器导入Excel文件,看能否成功!不成功说明格式有问题。
codeangel 2007-05-29
  • 打赏
  • 举报
回复
1.看看你的Excel文件是否生成
2.看看你的Excel文件格式是否是纯Excel格式文件
导入Excel可以查看
http://www.wsoft.net/Index/Catalog53/225.aspx
AOCOC 2007-05-29
  • 打赏
  • 举报
回复
自己跟踪调试一下吧..应该和excel没有什么关系..
shxmh 2007-05-29
  • 打赏
  • 举报
回复
去掉你的try和catch,看一看系统提示的错误信息
smartstar2005 2007-05-29
  • 打赏
  • 举报
回复
Mark
rainyubin 2007-05-29
  • 打赏
  • 举报
回复
删除操作都失败了 应该和excel没有关系 确认一下你的文件位置
mabaolin 2007-05-29
  • 打赏
  • 举报
回复
一步一步跟踪调试,F11,看看是那句话出的问题?
wangjun31 2007-05-29
  • 打赏
  • 举报
回复
删除操作也失败了 为什么呢?
具体内容参考我的BLOG:http://blog.csdn.net/smallwhiteyt/archive/2009/11/08/4784771.aspx 如果你耐心仔细看完本文,相信以后再遇到导出EXCLE操作的候你很顺手觉得SO EASY,主要给新手朋友们看的,老鸟可以直接飘过了,花了一晚上的间写的很辛苦,如果觉得对你有帮助烦留言支持一下,我写更多基础的原创内容来回报大家。 C#导出数据到EXCEL表格是个老生常谈的问题了,写这篇文章主要是给和我一样的新手朋友提供两种导出EXCEL的方法并探讨一下导出的效率问题,本文中的代码直接就可用,其中部分代码参考其他的代码并做了修改,抛砖引玉,希望大家一起探讨,如有不对的地方还大家多多包涵并指出来,我也是个新手,出错也是难免的。 首先先总结下自己知道的导出EXCEL表格的方法,大致有以下几种,有疏漏的大家补充。 1.数据逐条逐条的写入EXCEL 2.通过OLEDB把EXCEL做为数据源来写 3.通过RANGE范围写入多行多列内存数据到EXCEL 4.利用系统剪贴板写入EXCEL 好了,我想这些方法已经足够完成我们要实现的功能了,方法不在多,在精,不是么?以上4中方法都可以实现导出EXCEL,方法1为最基础的方法,意思就是效率可能不是太高,当遇到数据量过大所要付出的间也是巨大的,后面3种方法都是第一种的衍生,在第一种方法效率低下的基础上改进的,这里主要就是一个效率问题了,当然如果你数据量都很小,我想4种方法就代码量和复杂程度来说第1种基本方法就可以了,或当你的硬件非常牛逼了,那再差的方法也可以高效的完成也没有探讨的实际意义了,呵呵说远了,本文主要是在不考虑硬件或同等硬件条件下单从软件角度出发探讨较好的解决方案。

111,097

社区成员

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

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

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