1

我正在处理 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);
        }

在此处输入图像描述

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

我也搜索过,我们可以将它生成为一个类似的 html 包含并使它成为类似的东西。

谁能帮我?

4

2 回答 2

4

您可以使用Microsoft.Office.Interop.Excel. 添加对它的引用并在其他 using 语句旁边添加以下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();
}
于 2013-03-01T14:06:12.797 回答
0

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

于 2013-03-01T13:28:26.353 回答