C#中修改了EXCEL文档,如何保存?

suliang1984 2006-08-21 05:56:31
如题,保存时总会弹出对话框询问是否要保存修改的文档。怎样不出现这个提示直接保存呢?
另外,如何放弃修改直接关闭excel文档?
...全文
794 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yurenjf 2006-09-20
  • 打赏
  • 举报
回复
mark
linfuguo 2006-08-21
  • 打赏
  • 举报
回复
加上这个就可以了
app.DisplayAlerts = false;

想了解其它高级一些的信息,请查看
http://www.cnblogs.com/linfuguo/articles/462699.html

http://www.cnblogs.com/linfuguo/archive/2006/08/19/480976.html
飓风2000 2006-08-21
  • 打赏
  • 举报
回复
C#这样操作Excel才是最实用的
(注:office2003的Excel.dll要通过TlbImp.exe操作Excel.exe才能够得到,office2000中直接可以使用excel9.ole)
#region 保存到Excel按钮事件
string filename = "";
private void button6_Click(object sender, EventArgs e)
{

//将模板文件复制到一个新文件中
SaveFileDialog mySave = new SaveFileDialog();
mySave.Filter = "Excel文件(*.XLS)|*.xls|所有文件(*.*)|*.*";
if (mySave.ShowDialog() != DialogResult.OK)
{
return;
}
else
{
filename = mySave.FileName;
//将模板文件copy到新位置,建议实际开发时用相对路径,如
//Application.StartupPath.Trim()+"\\report\\normal.xls"
//string filenameold = mySave.FileName;
FileInfo mode = new FileInfo("d:\\normal.xls");
try
{
mode.CopyTo(filename, true);
}
catch (Exception ee)
{
MessageBox.Show(ee.Message);
return;
}
}
Thread thread1 = new Thread(new ThreadStart(toExcel));
thread1.Start();
}
#endregion

#region 临时调试将数据导入到excel
private void toExcel()
{

//打开复制后的文件
object missing = Missing.Value;
Excel.Application myExcel = new Excel.Application();
//打开新文件
myExcel.Application.Workbooks.Open(filename, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);

//将Excel显示出来
myExcel.Visible = false;
//逐行写入数据,数组中第一行我列标题,忽略
int rowIndex = 1;
int row_cnt = this.drugListDataGridView.Rows.Count;
int col_cnt = this.drugListDataGridView.Columns.Count;

// ?用于用DataGridTableStyle自定?DataGrid?。
for (int j = 0; j < col_cnt; j++)
{
myExcel.Cells[rowIndex, j + 1] = drugListDataGridView.Columns[j].HeaderText.ToString();
}
//同?方法?理数据
//for (int i = 0; i < col_cnt; i++)//取字段名
//{
// excel.Cells[1, i + 1] = this.xT_XY_DrugLibrary.Columns[i].ColumnName.ToString();
//}
rowIndex++;
//这里要注意,由于DataGrid中总是要多显示一行,而最后一行中没有数据,所以在读取的时候不要读最后一行
for (int row = 0; row < row_cnt - 1; row++)
{
for (int col = 0; col < col_cnt; col++)
{
try
{
myExcel.Cells[rowIndex, col + 1] = drugListDataGridView.Rows[row].Cells[col].Value.ToString();
}
catch
{
MessageBox.Show("数据导出出现异常!请重试");
return;
}
}
rowIndex++;
}
//将列标题和实际内容选中
Excel.Workbook myBook = myExcel.Workbooks[1];
Excel.Worksheet mySheet = (Excel.Worksheet)myBook.Worksheets[1];
Excel.Range r = mySheet.get_Range(mySheet.Cells[3, 1], mySheet.Cells[14, 7]);
r.Select();
//=====通过执行宏来为格表格加边框=======//
try
{
myExcel.Run("宏1", missing, missing,

missing, missing, missing, missing, missing, missing, missing,

missing, missing, missing, missing, missing, missing, missing,

missing, missing, missing, missing, missing, missing, missing,

missing, missing, missing, missing, missing, missing, missing);
}
catch
{
}
//保存修改
myBook.Save();
myExcel.Quit();
MessageBox.Show("保存成功!");

}
#endregion
suliang1984 2006-08-21
  • 打赏
  • 举报
回复
我也记得以前看过,可是找不到了。能给个地址吗?
dlzhangln 2006-08-21
  • 打赏
  • 举报
回复
看看之前的帖子,关于这方面的老了
scow 2006-08-21
  • 打赏
  • 举报
回复
Excel._Workbook m_objBook;
...................
m_objBook.Saved = true;
m_objBook.SaveCopyAs(sFilePath);
保存是自动覆盖

Excel.Application m_objExcel;
..........................
m_objExcel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objSheet);
不保存直接退出

110,535

社区成员

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

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

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