我想在将dataTable导出到excel
时添加超链接但是excel不能显示超链接属性,只能显示字符串。
dataTable输入字段是否有任何限制?
下面是我格式化DATATABLE的代码
int dt_current_row = 0;
string[] Days = testDays.ToArray();
for (int i = 0; i < tableOriginal.Rows.Count; i++)
{
string wo_number = handle(tableOriginal.Rows[i]["WO_NUMBER"].ToString());
string date = handle(tableOriginal.Rows[i]["CREATE_DATE"].ToString());
if (i == 0)
{
// Insert New
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
dr["WO_NUMBER"] = wo_number;
for (int x = 1; x < dt.Columns.Count; x++)
{
int z = Convert.ToInt32(Math.Floor(0.5 * (x - 1)));
//search Date
if (tableOriginal.Rows[i]["CREATE_DATE"].ToString() == Days[z])
{
//if equal , insert num and ID
object xx = tableOriginal.Rows[i]["NUM"];
int num = Convert.ToInt32(xx);
dr["PHOTO_" + z.ToString()] = num;
object yy = tableOriginal.Rows[i]["PHOTO_ID"];
string photo = Convert.ToString(yy);
dr["ID_" + z.ToString()] = HttpContext.Current.Server.HtmlEncode(httpLink + photo);
break;
}
}
}
....以及将DataTable中的单元格导出到excel文档xls中的单元格的部分 我试图设置公式,但它不起作用
foreach (DataRow r in result.Rows)
{
currentCol = 1;
foreach (DataColumn c in result.Columns)
{
string temp = c.ColumnName.ToString().Substring(0,2);
if (temp.Equals("ID"))
{
httpLinkForPhoto = r[currentCol - 1].ToString();
if (!httpLinkForPhoto.Equals(null))
{
string formula = "=HYPERLINK(" + httpLinkForPhoto + "," + httpLinkForPhoto + ")";
excelDoc2.SetFormula(1, 1, currentRow, currentCol, currentRow, currentCol, formula);
}
}
else
{
excelDoc2.setCell(1, 1, currentRow, currentCol, r[currentCol - 1].ToString());
}
currentCol++;
}
currentRow++;
}
答案 0 :(得分:2)
.net DataTable 只能包含 .net Types 。因此,无法在dataTable中添加“超链接”。但当然您可以添加指向excel Cell的超链接。有关向Excel添加超链接的详细信息,请参阅this question或MSDN。根据您的代码,这可能看起来像
// common syntax to add a Hyperlink to Excel
object Add(
[In] object Anchor,
[In] string Address,
[In, Optional] object SubAddress,
[In, Optional] object ScreenTip,
[In, Optional] object TextToDisplay
);
// your code
for (int rowIndex=0; rowIndex<result.Rows.Count; rowIndex++)
{
for (int columnIndex=0; columnIndex<result.Columns.Count; columnIndex++)
{
string yourValue = result.Rows[rowIndex].Item[columnIndex].ToString();
if (columnIndex!=YOUR_HYPERLINK_COLUMN_INDEX)
excelDoc2.setCell(1, 1, rowIndex, columnIndex, yourValue);
else
{
Excel.Range range = (Range) YOUR_SHEET.Cells[rowIndex, columnIndex];
CURRENT_WORKSHEET.Hyperlinks.Add(
range,
yourValue,
Type.Missing,"YOUR_SCREEN_TIP",
"YOUR_TEXT_TO_DISPLAY");
}
}
}
答案 1 :(得分:1)
Excel中有一个功能。语法是
=HYPERLINK(url;friendlyname)
只需确保单元格中的文字看起来像这样,url和friendlyname当然是占位符,您应该用它们替换您要显示的URL和文本。