2

私はExcelpackage.codeplex.comxlsxを作成するために使用しています。

アポストロフィ (') を使用して文字列を記述すると、System.Xml.XPath.XPathException例外が発生します。

そのパッケージを使用して ' で xlsx セルを作成するにはどうすればよいですか?

private void ExportApostrphoe()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("ID", typeof(int));
        dt.Columns.Add("Name");

        dt.Rows.Add(1, "Ben");
        dt.Rows.Add(2, "Joe's");
        dt.Rows.Add(3, "Mike");

        FileInfo newFile = new FileInfo(@"c:\1.xlsx");
        using (ExcelPackage xlPackage = new ExcelPackage(newFile))
        {
            OfficeOpenXml.ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets.Add("Sheet1");
            for (int x = 0; x < dt.Columns.Count; ++x)
            {
                DataColumn column = dt.Columns[x];
                worksheet.Cell(1, 1 + x).Value = column.Caption;

            }
            for (int x = 0; x < dt.Columns.Count; ++x)
            {
                for (int y = 0; y < dt.Rows.Count; ++y)
                {
                    worksheet.Cell(2 + y, 1 + x).DataType = "text";
                    worksheet.Cell(2 + y, 1 + x).Value = Convert.ToString(dt.Rows[y][x]);

                }

            }
            xlPackage.Save();
        }
    }
4

2 に答える 2

0

ライブラリのCodeplexサイトには、ソースに変更を加えてライブラリを再コンパイルすることで修正を参照する投稿がいくつかありますが、より迅速な修正のために、単一引用符を「右単一引用符」に置き換えることで回避できました.

したがって、「Bob's」は「Bob's」になります。これは、私の目的には完全に受け入れられます。

私はそれを拡張メソッドとして書きました:

public static string ReplaceSingleQuote(this string s) {
  if (!string.IsNullOrEmpty(s))
    return s.Replace('\u0027', '\u2032');
  else
    return s;
}

たとえば、次の行を変更します。

worksheet.Cell(2 + y, 1 + x).Value = Convert.ToString(dt.Rows[y][x]);

に :

worksheet.Cell(2 + y, 1 + x).Value = Convert.ToString(dt.Rows[y][x]).ReplaceSingleQuote();
于 2017-05-05T05:44:41.623 に答える