重开贴 excel输出文本进程线程问题 急! 本帖最后由 MOIZXO 于 2014-10-20 16:00:27 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 问题问的太乱先把问题捋清楚了,写个伪代码,然后再问不要一上来就发一大堆代码你发的再多也发不全,不可能整个工程的代码都发上来而你自己根本不清楚到底是哪里出了问题所以很可能真正有问题的代码反而没有发出来先把功能描述清楚,然后伪代码写明白每个模块都干了些什么比如什么excel又转txt的,完全不明白你在干什么 不好意思,没有发帖经验。。简单描述一下:上传excel文档,把符合条件的信息筛选保存到txt,以txt文本内容作为邮件的内容发送。认为出问题的地方就是excel输出到txt,写入失败。exportExcel(){ StreamWriter SWriter = new StreamWriter(ConfigurationManager.AppSettings["txt"], false, Encoding.Default); //遍历 return temp;} 话说,既然你已经能够读取excel,并将数据放到内存中了,为什么还要再生成txt,然后再读取txt,不觉得是脱裤子放屁吗除非你发email的程序和上传文件的网站是分开的,根本不是同一个工程.那么你需要读取txt之后,立即删除这个临时文件,以便下次再次生成这个txt excel没有关闭,之前我有过类似的情况,后来我解决了我就是吧操作excel的内容放在两个不同函数里面,不,实例化excel对象放在a函数中,关闭excel对象也在a中使用excel的功能,我放在B函数中,B中的excel对象由a传参数进去,这样就可以正确关闭excel对象了,我也不知道为什么 用NPOI吧,不要另开excel进程去处理excel 读取Excel数据到文本文件示例 private void btn_Txt_Click(object sender, EventArgs e) { //连接Excel数据库 OleDbConnection olecon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txt_Path.Text + ";Extended Properties=Excel 8.0"); olecon.Open();//打开数据库连接 OleDbDataAdapter oledbda = new OleDbDataAdapter("select * from [" + cbox_SheetName.Text + "$]", olecon);//从工作表中查询数据 DataSet myds = new DataSet();//实例化数据集对象 oledbda.Fill(myds);//填充数据集 StreamWriter SWriter = new StreamWriter(cbox_SheetName.Text + ".txt", false, Encoding.Default);//实例化写入流对象 string P_str_Content = "";//存储读取的内容 for (int i = 0; i < myds.Tables[0].Rows.Count; i++)//遍历数据集中表的行数 { for (int j = 0; j < myds.Tables[0].Columns.Count; j++)//遍历数据集中表的列数 { P_str_Content += myds.Tables[0].Rows[i][j].ToString() + " ";//记录当前遍历到的内容 } P_str_Content += Environment.NewLine;//字符串换行 } SWriter.Write(P_str_Content);//先文本文件中写入内容 SWriter.Close();//关闭写入流对象 SWriter.Dispose();//释放写入流所占用的资源 MessageBox.Show("已经将" + cbox_SheetName.Text + "工作表中的数据成功写入到了文本文件中", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } datagridview分页显示 c#中全局变量内存的释放 C# 串口通信 求助:如何建立一个简单的用户自定义模板(满分100) c#下,数据库连接失败后在连接 2007年6月C#版务专用帖 启动一个c# WinForm 的程序同时,不允许打开其他的程序。 这里有从delphi转到C#的朋友吗? 读取文件遇到了一个问题 新人想学.net开发,主要是想做win下客户端的应用软件。求大家推荐方法. 实现桌面任意位置显示ToolTip 谁有c# gdi 矢量绘图程序啊,包括缩放,移动。谢谢
先把问题捋清楚了,写个伪代码,然后再问
不要一上来就发一大堆代码
你发的再多也发不全,不可能整个工程的代码都发上来
而你自己根本不清楚到底是哪里出了问题
所以很可能真正有问题的代码反而没有发出来
先把功能描述清楚,然后伪代码写明白每个模块都干了些什么比如什么excel又转txt的,完全不明白你在干什么
不好意思,没有发帖经验。。
简单描述一下:
上传excel文档,把符合条件的信息筛选保存到txt,以txt文本内容作为邮件的内容发送。认为出问题的地方就是excel输出到txt,写入失败。
exportExcel()
{
StreamWriter SWriter = new StreamWriter(ConfigurationManager.AppSettings["txt"], false, Encoding.Default);
//遍历
return temp;
}
除非你发email的程序和上传文件的网站是分开的,根本不是同一个工程.
那么你需要读取txt之后,立即删除这个临时文件,以便下次再次生成这个txt
private void btn_Txt_Click(object sender, EventArgs e)
{
//连接Excel数据库
OleDbConnection olecon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txt_Path.Text + ";Extended Properties=Excel 8.0");
olecon.Open();//打开数据库连接
OleDbDataAdapter oledbda = new OleDbDataAdapter("select * from [" + cbox_SheetName.Text + "$]", olecon);//从工作表中查询数据
DataSet myds = new DataSet();//实例化数据集对象
oledbda.Fill(myds);//填充数据集
StreamWriter SWriter = new StreamWriter(cbox_SheetName.Text + ".txt", false, Encoding.Default);//实例化写入流对象
string P_str_Content = "";//存储读取的内容
for (int i = 0; i < myds.Tables[0].Rows.Count; i++)//遍历数据集中表的行数
{
for (int j = 0; j < myds.Tables[0].Columns.Count; j++)//遍历数据集中表的列数
{
P_str_Content += myds.Tables[0].Rows[i][j].ToString() + " ";//记录当前遍历到的内容
}
P_str_Content += Environment.NewLine;//字符串换行
}
SWriter.Write(P_str_Content);//先文本文件中写入内容
SWriter.Close();//关闭写入流对象
SWriter.Dispose();//释放写入流所占用的资源
MessageBox.Show("已经将" + cbox_SheetName.Text + "工作表中的数据成功写入到了文本文件中", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}