我们用Aspose.Cells打开了Excel文件,读取了里面的数据,有一个问题想咨询一下,如果现在有一千行的数据,我现在想在里面增加一行数据,但实际出来的效果是把这一千行的数据给读出来了,而不是增加一行数据,请问有什么办法能解决吗?
感谢您的查询。
我不完全确定你的问题或要求。您能否详细说明并提供有关完成任务所需内容的更多详细信息。您还可以共享示例代码(可运行),模板(输入和输出文件)文件,屏幕截图等。此外,提供您想要的预期文件(您可以在MS Excel中手动创建它们)以及如何在MS Excel中手动执行此操作的详细步骤。所有这些都将帮助我们真正准确地评估您的问题并帮助您解决问题。
我的意思是:假设我电脑上现有一个Excel文件,里面有1000行数据,我想实现往最底下一行(第1001行)写一行数据,我发现你们的DLL是将现有的1000行先读出来再跟我要写入的数据加一块一起写入到Excel,这样的效率太低了。
您似乎想要将现有数据末尾的一些数据附加到模板文件的工作表中,但它不应更改现有数据。好吧,您可能认为这种行为就像将一些文本附加到文本文件的末尾(尾部)。事实上,它完全不同。请注意,对于MS Excel文件,在向工作簿添加新数据时,有许多因素会影响工作簿/工作表的其余部分或全局缓存。简而言之,它不能只将额外数据写入现有MS Excel文件的末尾。
/// <summary>
/// DataTable数据导出Excel
/// </summary>
/// <param name="data"></param>
/// <param name="filepath"></param>
public static void DataTableExport(DataTable data, string filepath)
{
try
{
Workbook book = new Workbook(); //创建工作簿
Worksheet sheet = book.Worksheets[0]; //创建工作表
Cells cells = sheet.Cells; //单元格
//创建样式
Aspose.Cells.Style style = book.Styles[book.Styles.Add()];
style.Borders[Aspose.Cells.BorderType.LeftBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 左边界线
style.Borders[Aspose.Cells.BorderType.RightBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 右边界线
style.Borders[Aspose.Cells.BorderType.TopBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 上边界线
style.Borders[Aspose.Cells.BorderType.BottomBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 下边界线
style.HorizontalAlignment = TextAlignmentType.Center; //单元格内容的水平对齐方式文字居中
style.Font.Name = "宋体"; //字体
//style1.Font.IsBold = true; //设置粗体
style.Font.Size = 11; //设置字体大小
//style.ForegroundColor = System.Drawing.Color.FromArgb(153, 204, 0); //背景色
//style.Pattern = Aspose.Cells.BackgroundType.Solid;
int Colnum = data.Columns.Count;//表格列数
int Rownum = data.Rows.Count;//表格行数
//生成行 列名行
for (int i = 0; i < Colnum; i++)
{
cells[0, i].PutValue(data.Columns[i].ColumnName); //添加表头
cells[0, i].SetStyle(style); //添加样式
}
//生成数据行
for (int i = 0; i < Rownum; i++)
{
for (int k = 0; k < Colnum; k++)
{
cells[1 + i, k].PutValue(data.Rows[i][k].ToString()); //添加数据
cells[1 + i, k].SetStyle(style); //添加样式
}
}
sheet.AutoFitColumns(); //自适应宽
book.Save(filepath); //保存
GC.Collect();
}
catch (Exception e)
{
logger.Error("生成excel出错:" + e.Message);
}
}
我只想实现将数据写入现有Excel文件的末尾,以上代码是实现了我的需求但是效率非常低,有没有办法能够优化呢?
感谢您的代码段。
您的代码段对我来说似乎没问题。如果它适合您的需要,您可以尝试进一步增强它。例如,如果要从DataTable导入数据,最好一次使用数据导入选项,而不是浏览数据表中的每个记录并按单元格逐个粘贴,请参阅文档以供参考: