默认情况下,如何生成类型为“文本”而不​​是“常规”的Excel文件

时间:2013-03-01 13:19:08

标签: c# asp.net excel gridview

我正在研究c#项目,我正在从gridview生成动态excel文件。

当我成功生成文件时,它会将所有数据转换为Genaral类型,但我需要将所有excel文件数据转换为Text格式,

我该怎么做?因为我需要进一步使用此文件用于报告目的,并且需要Text作为类型

以下是我的excel文件生成c#代码:

private void ExportGridView()
        {
            System.IO.StringWriter sw = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);

            // Render grid view control.
            gvFiles.RenderControl(htw);

            // Write the rendered content to a file.
            string renderedGridView = sw.ToString();
            File.WriteAllText(@"C:\test\ExportedFile.xls", renderedGridView);
        }

enter image description here

我想我需要使用Microsoft.Office.Interop.Excel我可以指定类型也想生成Text

我也搜索过,就像我们可以像html一样生成它并使它像那样出类拔萃。

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:4)

您可以使用Microsoft.Office.Interop.Excel。添加对它的引用,并使用其他语句添加以下using语句。

using Microsoft.Office.Interop.Excel;

修改ExportGridView方法:

private void ExportGridView()
{
    var path = @"C:\test\ExportedFile.xls";
    System.IO.StringWriter sw = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);

    // Render grid view control.
    gvFiles.RenderControl(htw);

    // Write the rendered content to a file.
    string renderedGridView = sw.ToString();
    File.WriteAllText(path, renderedGridView);
    UpdateFormat(path);
}

添加以下方法:

private void UpdateFormat(string path)
{
    var application = new Microsoft.Office.Interop.Excel.Application();
    var doc = application.Workbooks.Open(path);
    for (int i = 1; i <= doc.Worksheets.Count; i++)
    {
        Worksheet sheet = doc.Worksheets[i];
        for (int j = 1; j <= sheet.Columns.Count; j++)
        {
            Range column = sheet.Columns[j];
            column.NumberFormat = "@";
        }
    }
    doc.Save();
    doc.Close();
    application.Quit();
}

答案 1 :(得分:0)

只是一个猜测,但它是因为你正在编写gridview html?你可以创建一个CSV文件并用.xls保存它,它将是一个excel文档