C# 导出数据到excel时如何代码设置excel前两列不可编辑

qqziyouhuanxiang 2012-07-07 03:26:35
如题所说、
各位大侠帮帮忙
代码如下
FileInfo mode = new FileInfo(Server.MapPath("~/WLQdPzgl/Excel/品质管理物料视图.xls"));
//不存在直接返回
if (!mode.Exists)
return;
//实例化一个Excel.Application对象
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
excel.Application.DisplayAlerts = false;
//让后台执行设置为不可见,为true的话会看到打开一个Excel,然后数据在往里写
excel.Visible = false;

Microsoft.Office.Interop.Excel.Workbooks workbooks = excel.Workbooks;
Microsoft.Office.Interop.Excel.Workbook tworkbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
Object missing = System.Reflection.Missing.Value;
excel.Workbooks.Add(missing);
//tworkbook = excel.Workbooks.Open(mode.FullName, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
Microsoft.Office.Interop.Excel.Worksheet tworksheet = (Microsoft.Office.Interop.Excel.Worksheet)tworkbook.ActiveSheet;

#region 生成品质管理物料视图中列头名称
tworksheet.Name = "品质管理物料视图";
tworksheet.Cells[1, 1] = "产品标识码";
tworksheet.Cells[1, 2] = "批号";
tworksheet.Cells[1, 3] = "物料编码";
tworksheet.Cells[1, 4] = "物料描述";
tworksheet.Cells[1, 5] = "物料类型";
tworksheet.Cells[1, 6] = "工厂";
tworksheet.Cells[1, 7] = "最小剩余货架寿命";
tworksheet.Cells[1, 8] = "批次管理";
#endregion
for (int i = 0; i < ds.Rows.Count; i++)
{
DataRow dr = ds.Rows[i];
tworksheet.Cells[i + 2, 1] = "'" + dr["CPBM"].ToString().Trim();
tworksheet.Cells[i + 2, 2] = "'" + dr["PH"].ToString().Trim();
tworksheet.Cells[i + 2, 3] = "'" + dr["WLBMID"].ToString().Trim();
tworksheet.Cells[i + 2, 4] = "'" + dr["WLMS"].ToString().Trim();
tworksheet.Cells[i + 2, 5] = "'" + dr["WLLX"].ToString().Trim();
tworksheet.Cells[i + 2, 6] = "'" + dr["GC"].ToString().Trim();
tworksheet.Cells[i + 2, 7] = "'" + dr["SYHJSM"].ToString().Trim();
tworksheet.Cells[i + 2, 8] = "'" + dr["PCGL"].ToString().Trim();
}
tworksheet.Columns.AutoFit();

tworkbook.SaveCopyAs(Server.MapPath("~/WLQdPzgl/Excel/品质管理物料视图模板.xls"));
tworkbook.Close(false, mode.FullName, missing);
//确保Excel进程关闭
excel.Workbooks.Close();
excel.Quit();
if (excel != null)
{
foreach (System.Diagnostics.Process p in System.Diagnostics.Process.GetProcessesByName("Excel"))
{
//先判断当前进程是否是excel
if (!p.CloseMainWindow())
{
p.Kill();
}
}
}
tworkbook = null;
excel = null;
GC.Collect();
FileInfo file = new FileInfo(Server.MapPath("~/WLQdPzgl/Excel/品质管理物料视图模板.xls"));
//打开保存对话框
Response.Clear();
Response.ClearHeaders();
Response.Buffer = false;
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.ContentType = "application/ms-excel";
// 添加头信息,指定文件大小,让浏览器能够显示下载进度
Response.AppendHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode(mode.Name));
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
// 添加头信息,指定文件大小,让浏览器能够显示下载进度
Response.AppendHeader("Content-Length", mode.Length.ToString());
// 指定返回的是一个不能被客户端读取的流,必须被下载
Response.ContentType = "application/ms-excel";
this.EnableViewState = false;
// 把文件流发送到客户端
Response.WriteFile(file.FullName);
Response.Flush();
Response.End();

我该在哪里直接设置导出的Excel 前面两列不可编辑勒 再次说声谢谢了
...全文
272 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qqziyouhuanxiang 2012-07-07
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
如题所说、
各位大侠帮帮忙
代码如下
FileInfo mode = new FileInfo(Server.MapPath("~/WLQdPzgl/Excel/品质管理物料视图.xls"));
//不存在直接返回
if (!mode.Exists)
return;
//实例化一个Excel.Application对象
Microsoft.Off……
[/Quote]

谢谢 搞定了
qqziyouhuanxiang 2012-07-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
http://hi.baidu.com/mou518/item/4c819b0dcfe987c52f4c6b2d
[/Quote]

我也报HRESULT:0x800A03EC 这个错误了 我该怎么写哦
写在代码哪里啊 大侠帮帮我吧

110,535

社区成员

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

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

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