我想编写一个控制台应用程序,我将数据提取到数据集中。然后我想将文件保存到本地硬盘驱动器。我的webapp中的代码提示用户保存,但我想将其保存到服务器的本地硬盘并向用户发送电子邮件。到目前为止,这是我的代码:
Response.Clear();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=Test.xls;");
Response.Charset = "";
System.IO.StringWriter sw = new System.IO.StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
dg.RenderControl(htw);
Response.Write("<style>.fraction { mso-number-format:#\\/#; }</style>");
Response.Write(sw.ToString());
Response.End();
我将不胜感激任何帮助。感谢。
答案 0 :(得分:1)
系统会提示用户通过浏览器保存文件,而不是通过您的网络应用程序保存文件。如果您有本地执行的控制台应用程序,则可以绕过所有这些,只需打开FileStream
进行编写,并将HtmlTextWriter
与之关联。如果您明确编写代码来执行此操作,它只会提示用户覆盖。
答案 1 :(得分:0)
这是我的控制台应用程序的片段,它在没有用户提示的情况下保存文件。您必须为Excel添加COM引用。
private void btnExcel_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
app.Visible = true;
Microsoft.Office.Interop.Excel.Workbook wb = app.Workbooks.Add(1);
Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.Worksheets[1];
int i = 1;
int i2 = 1;
foreach (ListViewItem lvi in lvwResults.Items)
{
i = 1;
foreach (ListViewItem.ListViewSubItem lvs in lvi.SubItems)
{
ws.Cells[i2, i] = lvs.Text;
i++;
}
i2++;
}
wb.SaveAs(String.Format(@"C:\MyReportABC-{0}-{1}", String.Format("{0:yyyyMMdd}", DateTime.Today), String.Format("{0:hhmm}", DateTime.Now)));
wb.Close(true);
}
输出名为MyReportABC-20120621-0539.xls的文件(每次更改,您也可以在字符串中添加用户ID)