c# - 想通过以文本格式保留所有行和列来在 C# 中创建 excel 文件
问题描述
我正在创建一个 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();
有人可以帮帮我吗?
提前致谢。
解决方案
尝试使用任何 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# - 为什么我的数组中应该没有任何内容时总是有 0 - C#
- node.js - 使用 mongoose 根据 ObjectId 保存数组值
- javascript - React Native 中的自定义按钮组件不接受道具
- html - 应该如何将同一行中的图像与
- java - 下载最新的 gradle 版本后项目无法构建
- spring - 运行所有 JUnit 测试时连接被拒绝
- deeplearning4j - 有什么方法可以在 DL4J 训练期间打印每一行的输入和输出数据?
- vb.net - 将 DGV 绑定到在其他线程上创建的数据表。UI 线程正在从数据表线程中获取控制权
- c - 在一个函数中调用不同的 CAN 控制器?
- angular - 在 Angular 中提前输入