我想在datatable中已经添加好的标题栏上再添加一个标题


WriteHeadToSheet(arrCnNames);
workbook.Save();
string strCnNames = "";
string strValues = "";
for (int i = 0; i < arrCnNames.Count; i++)
{
strCnNames += arrCnNames[i].ToString() + " , ";
}
strCnNames = strCnNames.Trim().TrimEnd(',');
string strExcel = "INSERT INTO [{0}$] ({1}) VALUES ({2})";
conn.Open();
foreach (DataRow dr in SourceTable.Rows)
{
for (int i = 0; i < SourceTable.Columns.Count; i++)
{
strValues += " '" + dr[i].ToString() + "', ";
}
strValues = strValues.Trim().TrimEnd(',');
comm = new OleDbCommand(string.Format(strExcel, mstrCurrWorksheetName, strCnNames, strValues), conn);
comm.ExecuteNonQuery();
strValues = "";
}
这个是我写入EXCEL的代码,请问各位有什么好办法在写入EXCEL的时候多写一行标题吗?
谢谢了,我是新手,尽量说具体点
------解决思路----------------------
所以你WriteHeadToSheet()的时候要从2开始
for (int i = 0; i < arrHead.Count; i++)
{
WriteCell(2, i + 1, arrHead[i].ToString());
}
你在 WriteCell(1, 4, "要加的标题"); 的时候写在第一行
而WriteHeadToSheet方法还是从第一行开始写的,就覆盖掉了
------解决思路----------------------
public static void ExcelSave(System.Data.DataTable tbl)
{
if (tbl == null)
{
MessageBox.Show("数据源为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
int tbl_rc = tbl.Rows.Count;
if (tbl_rc <= 0)
{
MessageBox.Show("缺少可以导出的数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
string saveFileName = string.Empty;
SaveFileDialog sfd = new SaveFileDialog();
sfd.DefaultExt = "xlsx";
sfd.Filter = "Excel文件
------解决思路----------------------
*.xlsx";
sfd.FileName = "sheet";
sfd.ShowDialog();
saveFileName = sfd.FileName;
if (saveFileName.IndexOf(".") < 0)
{
return;
}
Microsoft.Office.Interop.Excel.Application myExcelApp = new Microsoft.Office.Interop.Excel.Application();
if (myExcelApp == null)
{
MessageBox.Show("无法创建Excel,可能您未安装Excel", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
Workbooks workbooks = myExcelApp.Workbooks;
Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);
Sheets sheets = workbook.Worksheets;
Worksheet worksheet = (Worksheet)sheets.get_Item(1);
Range range;
//object oMis = System.Reflection.Missing.Value;
range = worksheet.Range[worksheet.Cells[1, 1], worksheet.Cells[tbl_rc + 2, tbl.Columns.Count]];
range.NumberFormatLocal = "@";
range.Columns.AutoFit();
range.RowHeight = 18;
range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;
//写入标题
worksheet.Cells[1, 1] = "标题";
//写入字段名
for (int i = 0; i < tbl.Columns.Count; i++)
{
worksheet.Cells[2, i + 1] = tbl.Columns[i].Caption.Trim();
}
//写入内容
for (int r = 0; r < tbl_rc; r++)
{
for (int i = 0; i < tbl.Columns.Count; i++)
{
string a = tbl.Rows[r][i].ToString().Trim();
worksheet.Cells[r + 3, i + 1] = a;
}
}
//保存
if (saveFileName != string.Empty)
{
try
{
workbook.Saved = true;
workbook.SaveCopyAs(saveFileName);
}
catch (Exception ex)
{
MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
else
{
MessageBox.Show("文件名不能为空", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
myExcelApp.Visible = false;
myExcelApp.Quit();
GC.Collect();//垃圾回收
}
这个需要机器上安装有OFFICE才可以导出.