0

我想编写一个控制台应用程序,我将在其中将数据提取到数据集中。然后我想将文件保存到本地硬盘驱动器。我的 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();

我将不胜感激任何帮助。谢谢。

4

2 回答 2

1

浏览器提示用户保存文件,而不是您的 Web 应用程序。如果您有一个本地执行的控制台应用程序,您可以绕过所有这些,只需打开一个FileStream用于编写的,并将您的HtmlTextWriter与它相关联。如果您明确编写代码来执行此操作,它只会提示用户覆盖。

于 2012-06-21T21:34:33.373 回答
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)

于 2012-06-21T21:43:06.043 回答