13

我的代码将生成这样的 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");
}

没有问题。

我想让标题像内联一样。

4

4 回答 4

2
...
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 格式不支持合并单元格,但您仍然可以像上面描述的那样排列标题行。只需将分隔符替换为您的单元格分隔符即可。

于 2014-01-29T19:38:07.383 回答
2

您是否考虑过使用 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

于 2014-02-01T00:46:27.387 回答
-3
  1. 首先在 excel 中创建您的 excel 文件模板并根据需要对其进行格式化。
  2. 只放置一行将打印很多行。
  3. 将标签放入数据行以替换为真实数据。
  4. 将其保存为 MHT 文件。(样式将被保存,也像 html)
  5. 使用文本编辑器打开 mht 文件。
  6. 将 <!#> 放在数据行的开头和结尾,以便您可以从程序中拆分文件内容并通过用真实属性替换标签来动态填充真实数据行。

    <!#>
    <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>
    <!#>
    
  7. 从文本编辑器保存文件。

  8. 从您的程序中,您将读取 mht 文件内容,您将使用 <!#> 将其拆分并乘以数据行部分,将所有内容附加在一起并保存到另一个文件..就是这样..

于 2013-10-11T08:10:55.667 回答
-5

您需要安装 Microsoft Visual Studio Tools for Office。

之后创建通用 .NET 项目并通过“添加引用..”对话框添加对 COM 对象 Microsoft.Office.Interop.Excel.dll 的引用。

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
于 2014-01-27T07:42:15.940 回答