急~~~~~~asp.net如何将excel文件按照sheet拆分!顶者有分

glboy12 2009-10-22 10:43:06
请教一个问题:如何将一个excel文件按照sheet,拆分保存为多个excel文件?比如:excel文件里有3个sheet分别为:sheet1,sheet2,sheet3。如何将这个excel文件拆分,保存为3个excel文件?
...全文
212 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjybushiren88888 2009-10-23
  • 打赏
  • 举报
回复
顶下 关注
TalesTen 2009-10-23
  • 打赏
  • 举报
回复
帮顶的~
conanhhy 2009-10-23
  • 打赏
  • 举报
回复
虽然没写过类似的,不过给个思路:使用宏
打开EXCEL文件,并新建空白EXCEL文件,然后,人工拷贝黏贴下,之后看看宏代码是怎么写的。
最后根据宏代码写程序
mousebb 2009-10-23
  • 打赏
  • 举报
回复
先用Excel的application对象读取要拆分的Excel文件到workbook对象,遍历这个workbook对象的sheet,取出每一个sheet对象,再实例化一个空的workbook对象,把取出的每个sheet赋给新定义的workbook的sheet,用Copy方法到新workbook里,保存新workbook到指定路径即可!


Microsoft.Office.Interop.Excel.ApplicationClass app = new Microsoft.Office.Interop.Excel.ApplicationClass();
app.DisplayInfoWindow = false;
app.DisplayAlerts = false;



Microsoft.Office.Interop.Excel.Workbook book = null;

book = app.Workbooks.Open("原文件路径", 0, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

for (int i = 0; i < book.Sheets.Count; i++)
{
Microsoft.Office.Interop.Excel.Worksheet wsh = (Microsoft.Office.Interop.Excel.Worksheet)book.Worksheets[i + 1];

Microsoft.Office.Interop.Excel.Workbook bookNew = null;
bookNew = app.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
Microsoft.Office.Interop.Excel.Worksheet sheetNew = null;

sheetNew = (Microsoft.Office.Interop.Excel.Worksheet)bookNew.Sheets.Add(Missing.Value, Missing.Value, 1, Microsoft.Office.Interop.Excel.XlSheetType.xlWorksheet);
//下面代码为去除生成新文件里多余的Sheet
if (!wsh.Name.Contains("Sheet"))
{
sheetNew = wsh;
sheetNew.Copy(bookNew.Sheets["Sheet1"], Missing.Value);
sheetNew.Name = System.IO.Path.GetFileName(wsh.Name);
int num = bookNew.Sheets.Count;
for (int j = 0; j < num; j++)
{
//获取Excel表中的sheet表
Microsoft.Office.Interop.Excel.Worksheet wsh2 = (Microsoft.Office.Interop.Excel.Worksheet)bookNew.Worksheets[j + 1];
if (wsh2.Name.Contains("Sheet"))
{
//删除已存在的空sheet表
wsh2.Delete();
num--;
j--;
}
}

}

app.CutCopyMode = Microsoft.Office.Interop.Excel.XlCutCopyMode.xlCopy;
bookNew.SaveAs("路径"+wsh.Name + ".xls", Microsoft.Office.Interop.Excel.XlFileFormat.xlTemplate, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

}
app.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject((object)app);
GC.Collect();
glboy12 2009-10-22
  • 打赏
  • 举报
回复
那不行,excel文件里有表格样式,还有电子签章
slove1116 2009-10-22
  • 打赏
  • 举报
回复
先读到datatable再导出吧,估计速度。。。
glboy12 2009-10-22
  • 打赏
  • 举报
回复
没人知道吗???达人速度进
glboy12 2009-10-22
  • 打赏
  • 举报
回复
没人知道吗???达人速度进
randomfeel 2009-10-22
  • 打赏
  • 举报
回复
嘿嘿,用asp.net不会
不过我可以用鼠标+键盘实现这个效果...
TalesTen 2009-10-22
  • 打赏
  • 举报
回复
up
爱的华尔兹 2009-10-22
  • 打赏
  • 举报
回复
学习一下!
mark620 2009-10-22
  • 打赏
  • 举报
回复
excelApplication
mingl11 2009-10-22
  • 打赏
  • 举报
回复
帮顶~~~
carkiller 2009-10-22
  • 打赏
  • 举报
回复
可以尝试
先找到sheet,然后按sheet找表内的内容
暴走的车轮 2009-10-22
  • 打赏
  • 举报
回复
mark 关注!~
tzs2304 2009-10-22
  • 打赏
  • 举报
回复
友情帮顶
yanm7788 2009-10-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 glboy12 的回复:]
那不行,excel文件里有表格样式,还有电子签章
[/Quote]
估计有点难弄...期待高手.
liaoyukun111 2009-10-22
  • 打赏
  • 举报
回复
OleDbConnection objConn = new OleDbConnection(strConn);

objConn.Open();
DataTable dtExcelSchema = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
string SheetName = "";

SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();//表名一般是三个
表名都找到了,下面就继续你要的,分别对表操作

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧