C# 导出到EXCEL,多次导出选择同一个EXCEL表,怎么插入到sheet而不是替换
C# 导出到EXCEL,多次导出选择同一个EXCEL表,如何插入到sheet而不是替换
我的导出代码:
public static void ExportToExcel(System.Data.DataTable dt)
{
if (dt == null) return;
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
System.Windows.Forms.SaveFileDialog saveDia = new SaveFileDialog();
saveDia.Filter = "Excel 文件(*.xls)|*.xls|Excel 文件(*.xlsx)|*.xlsx";
saveDia.Title = "导出为Excel文件";
saveDia.FileName = string.Format(DateTime.Now.ToString("yyyy-MM-dd-HHmmss"));
if (saveDia.ShowDialog() == System.Windows.Forms.DialogResult.OK
&& !string.Empty.Equals(saveDia.FileName))
{
Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
Microsoft.Office.Interop.Excel.Range range = null;
long totalCount = dt.Rows.Count;
long rowRead = 0;
float percent = 0;
string fileName = saveDia.FileName;
//写入标题
for (int i = 0; i < dt.Columns.Count; i++)
{。。。。。}
//写入内容
。。。。。。
个人想法:
如果导出时,判断下(文件名是否重复) 如果重复 {插入到sheet2里 } 如果没有重复{。。。}
求教具体想法和写法~~~~非常感谢!
------解决方案--------------------
你的想法完全正确,做法就是判断文件重复后跳过SaveFileDialog操作,直接打开个那个文件,然后追加一个新sheet,然后再新sheet内操作数据
------解决方案--------------------
不是已经取得saveDia.FileName并判断它是否为空了么
再加一个判断,此文件是否存在,存在就打开,追加个sheet
不存在就执行你之前的代码.
------解决方案--------------------
我的导出代码:
public static void ExportToExcel(System.Data.DataTable dt)
{
if (dt == null) return;
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
System.Windows.Forms.SaveFileDialog saveDia = new SaveFileDialog();
saveDia.Filter = "Excel 文件(*.xls)|*.xls|Excel 文件(*.xlsx)|*.xlsx";
saveDia.Title = "导出为Excel文件";
saveDia.FileName = string.Format(DateTime.Now.ToString("yyyy-MM-dd-HHmmss"));
if (saveDia.ShowDialog() == System.Windows.Forms.DialogResult.OK
&& !string.Empty.Equals(saveDia.FileName))
{
Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
Microsoft.Office.Interop.Excel.Range range = null;
long totalCount = dt.Rows.Count;
long rowRead = 0;
float percent = 0;
string fileName = saveDia.FileName;
//写入标题
for (int i = 0; i < dt.Columns.Count; i++)
{。。。。。}
//写入内容
。。。。。。
个人想法:
如果导出时,判断下(文件名是否重复) 如果重复 {插入到sheet2里 } 如果没有重复{。。。}
求教具体想法和写法~~~~非常感谢!
------解决方案--------------------
你的想法完全正确,做法就是判断文件重复后跳过SaveFileDialog操作,直接打开个那个文件,然后追加一个新sheet,然后再新sheet内操作数据
------解决方案--------------------
不是已经取得saveDia.FileName并判断它是否为空了么
再加一个判断,此文件是否存在,存在就打开,追加个sheet
不存在就执行你之前的代码.
------解决方案--------------------
for (int k = 1; k < ds.Tables[1].Rows.Count + 1; k++)
{
_Excel.Sheets xlSheets = book.Sheets as Sheets;
// 添加 Sheet
sheet = (Worksheet)xlSheets.Add(xlSheets[1], Type.Missing, Type.Missing, Type.Missing);
}