想通过以文本格式保留所有行和列来在 C# 中创建 excel 文件

Posted

技术标签:

【中文标题】想通过以文本格式保留所有行和列来在 C# 中创建 excel 文件【英文标题】:want to create excel file in C# by preserving all rows and columns in text format 【发布时间】:2020-05-26 02:27:08 【问题描述】:

我正在创建一个 C# 应用程序,其中数据需要以文本格式粘贴到 Excel 文件中。我能够成功生成 Excel 文件,但我无法将所有行和列都格式化为文本格式。

我尝试使用此代码,但它不起作用:

string style = @"<style> .textmode  mso-number-format:\@;  </style>";
Response.Write(style);

这是我生成 Excel 文件的代码:

SqlConnection con = new SqlConnection(ConnectionString);
DataSet dt = new DataSet();

SqlDataAdapter sda = new SqlDataAdapter("select * from company where 1=2", con);

con.Open();
sda.Fill(dt);

ViewState["DataTable"] = dt.Tables[0];

GridView gv = new GridView();
gv.DataSource = dt;
gv.DataBind();

con.Close();

DataTable dta = (DataTable)ViewState["DataTable"];

Response.Clear();
Response.AddHeader("Content-Disposition", "attachment;filename=FileFormatforData.xls");
Response.ContentType = "application/vnd.ms-excel";
//string style = @"<style> .textmode  mso-number-format:\@;  </style>"; //format row and cols
//Response.Write(style);
string space = "";

foreach (DataColumn col in dta.Columns)

     Response.Write(space + col.ColumnName);
     space = "\t";


Response.Write("\n");

int countcolumn;

foreach (DataRow dr in dta.Rows)

    space = "";

    for (countcolumn = 0; countcolumn < dta.Columns.Count; countcolumn++)
    
        Response.Write(space + dr[countcolumn].ToString());
        space = "\t";
    

    Response.Write("\n");


Response.End();

有人可以帮帮我吗?

提前致谢。

【问题讨论】:

【参考方案1】:

尝试使用任何 Excel 输出库。以我的SwiftExcel为例:

using (var ew = new ExcelWriter("C:\\temp\\test.xlsx"))

    int col = 1;
    int row = 1;

    foreach (DataColumn col in dta.Columns)
    
        ew.Write(col.ColumnName, col++, row);
    

    foreach (DataRow dr in dta.Rows)
    
        ++row;
        for (col = 1; col <= dta.Columns.Count; col++)
        
            ew.Write(dr[col-1].ToString(), col, row);
        
    

【讨论】:

以上是关于想通过以文本格式保留所有行和列来在 C# 中创建 excel 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何通过分隔行和列来创建gridview?

在 swing 中创建运行时 jtable

当我尝试使用文件维度作为行和列在 C 中创建矩阵时,为啥会出现错误?

C#如何读取数据库表中每一列的数据分别赋值给数组

比较用于过滤数据表c#的文本框

如何在 Python 中创建DataFrame