如何使用 C# 在 excel / csv 中格式化标题
本文关键字:csv 格式化 标题 excel 何使用 | 更新日期: 2023-09-27 18:34:57
我的代码将生成如下 excel 文档
|id | Name | Address | company_Name | Destination|
|----|-------|----------|--------------|------------|
|##1 | xxx | xxxx | xxx | xxxxx |
但是我想要这样...
-----------------------------------------------------
| Personal Information | Working INFO |
-----------------------------------------------------
|id | Name | Address | company_Name | Destination|
|----|-------|----------|--------------|------------|
|##1 | xxx | xxxx | xxx | xxxxx |
-----------------------------------------------------
我从 API 获取数据,然后使用SaveFileDialog
保存它
SaveFileDialog dialog = new SaveFileDialog();
dialog.Title = "Save file as...";
dialog.Filter = "Text files (*.csv)|*.csv";
dialog.RestoreDirectory = true;
if (dialog.ShowDialog() == DialogResult.OK)
{
System.IO.StreamWriter writer = new System.IO.StreamWriter(dialog.FileName); //open the file for writing.
writer.Write(report); //write the current date to the file. change this with your date or something.
writer.Close(); //remember to close the file again.
writer.Dispose(); //remember to dispose it from the memory.
program.ShowInformationMessage("File Save successfully");
}
它没有问题。
我想使标题作为内联类似的东西。
...
System.IO.StreamWriter writer = new System.IO.StreamWriter(dialog.FileName); //open the file for writing.
writer.Write("Personal Information" + delimiter + delimiter + "Working INFO" + delimiter);
writer.Write(report); //write the current date to the file. change this with your date or something.
...
csv 格式不支持合并的单元格,但您仍然可以像上面描述的那样排列标题行。只需将分隔符替换为单元格分隔符即可。
您是否考虑过使用 closedxml (https://closedxml.codeplex.com/(。
var wb = new XLWorkbook(report); //open spreadsheet
IXLWorksheet ws = wb.Worksheets.First(); //get first sheet
ws.Row(1).InsertRowsAbove(1); //insert row
ws.Cell("A1").Value = "Personal Information";
ws.Cell("A4").Value = " Working INFO";
ws.Range("A1:A3").Row(1).Merge(); // merge first title
ws.Range("A4:A6").Row(1).Merge(); // merge second
wb.SaveAs(writer);
您也可以打开csv并另存为csv
- 首先,在 excel
- 中创建您的 excel 文件模板并根据需要设置其格式。
- 只放置一行将打印大量行的位置。
- 将标签放入数据行以替换为实际数据。
- 将其另存为 MHT 文件。(样式将被保存,也像html(
- 使用文本编辑器打开 mht 文件。
将 <!#> 放在数据行的开头和结尾,以便您可以从程序中拆分文件内容,并通过将标签替换为实际属性来动态填充实际数据行。
<!#> <tr height=3D20 style=3D'height:15.0pt'> <td height=3D20 class=3Dxl67 style=3D'height:15.0pt;border-top:none'>[id]=</td> <td class=3Dxl67 style=3D'border-top:none;border-left:none'>[name]</td> <td class=3Dxl67 style=3D'border-top:none;border-left:none'>[company<span style=3D'display:none'>]</span></td> <td class=3Dxl67 style=3D'border-top:none;border-left:none'>[destination]=</td> </tr> <!#>
从文本编辑器保存文件。
从您的程序中,您将读取 mht 文件内容,您将用 <!#> 拆分它并乘以数据行部分,将所有内容附加到一起并保存到另一个文件中。就是这样。。
您需要
安装Microsoft Visual Studio Tools for Office。
之后,创建通用.NET项目,并通过"添加引用..dll对话框添加对COM对象Microsoft.Office.Interop.Excel的引用。
Application excel = new Application();
Workbook wb = excel.Workbooks.Open(path);
//Get All available worksheets
//Excel.Sheets excelSheets = wb.Worksheets;
//Get Specific WorkSheet
string currentSheet = "Sheet1";
Excel.Worksheet newSheet = (Excel.Worksheet)wb.get_Item(currentSheet);
newSheet.Cells[i, j].HorizontalAlignment = ExcelAlignment.xlLeft; //or Excel.XlHAlign.xlHAlignLeft