1

我正在使用 EPPlus 3.0(codeplex 最新库)库来下载 excel 文件。一切工作正常,但有些列"_x00D_"在数据上显示字符串。我在谷歌研究,每个人都说它是换行符。我尝试了所有场景仍然无法正常工作。

请给我建议。

  Using pck As New ExcelPackage()
                    'Create the worksheets
   Dim wsAll As ExcelWorksheet = pck.Workbook.Worksheets.Add("All")
   Dim wsManufacturing As ExcelWorksheet = pck.Workbook.Worksheets.Add("Manufacturing")
   Dim wsHealthcare As ExcelWorksheet = pck.Workbook.Worksheets.Add("Healthcare")
   Dim wsManagement As ExcelWorksheet = pck.Workbook.Worksheets.Add("Management")
   Dim wsSelling As ExcelWorksheet = pck.Workbook.Worksheets.Add("Selling")

   'Load the datatable into the sheet, starting from cell A1. Print the column names on row 1
   wsAll.Cells("A1").LoadFromDataTable(dtAllDownload, True)
   If dtManufacturing.Rows.Count > 0 Then
     wsManufacturing.Cells("A1").LoadFromDataTable(dtManufacturing, True)
   End If
   If dtChinaHealthcare.Rows.Count > 0 Then
     wsHealthcare.Cells("A1").LoadFromDataTable(dtHealthcare, True)
   End If
   If dtChinaManagement.Rows.Count > 0 Then
       wsManagement.Cells("A1").LoadFromDataTable(dtManagement, True)
   End If
   If dtSelling.Rows.Count > 0 Then
      wsSelling.Cells("A1").LoadFromDataTable(dtSelling, True)
   End If

   Dim filename As String = "FullExtract_" & Now.Year.ToString & Now.Month.ToString & Now.Day.ToString & ".xlsx"
    Dim fileBytes As [Byte]() = pck.GetAsByteArray()
    HttpContext.Current.Response.Clear()
    HttpContext.Current.Response.ClearContent()
    HttpContext.Current.Response.ClearHeaders()
    HttpContext.Current.Response.Cookies.Clear()
    HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.[Private])
    HttpContext.Current.Response.CacheControl = "private"
    HttpContext.Current.Response.Charset = System.Text.UTF8Encoding.UTF8.WebName
    HttpContext.Current.Response.ContentEncoding = System.Text.UTF8Encoding.UTF8
    HttpContext.Current.Response.AppendHeader("Content-Length", fileBytes.Length.ToString())
    HttpContext.Current.Response.AppendHeader("Pragma", "cache")
    HttpContext.Current.Response.AppendHeader("Expires", "60")
    HttpContext.Current.Response.AddHeader("content-disposition", "attachment;  filename=" & filename)
    HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
    HttpContext.Current.Response.BinaryWrite(fileBytes)
    HttpContext.Current.Response.[End]()
4

1 回答 1

0

我假设这个字符串来自 DataTable,你可以用这个方法替换它:

public static void Replace_x00D_(DataTable data)
{
  List<DataColumn> stringColumns = new List<DataColumn>();
  foreach (DataColumn dc in data.Columns)
  {
    if (dc.DataType == typeof(string))
      stringColumns.Add(dc);
  }

  foreach (DataRow rw in data.Rows)
  {
    foreach (DataColumn dc in stringColumns)
      rw.Field<string>(dc).Replace("_x00D_", "");
  }
}
于 2012-05-29T21:37:47.200 回答