asp.net 导出批量 excel 并根据路径保存 兄弟们,姐妹们,大哥大姐们:请问 在web页面上如何实现 弹出对话框 选择文件夹并 保存多个excel文件?求指教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 本帖最后由 net_lover 于 2011-07-12 17:17:51 编辑 多个文件?最好是先压缩然后再下载,网上有一个控件很容易实现这功能的 SharpZipLib.dll 高手们 说的我 不太明白……我是导出多个Excel文件,保存在同一文件夹下的…… 这种情况建议你先将多个Excel文件先放在服务器的临时文件夹里进行打包,然后再导出。 不如导出多个SHEET。参考 不是给你解决方法了吗?你需要使用多个iframe<iframe src="d.aspx?file=1" style="display:none"></iframe><iframe src="d.aspx?file=2" style="display:none"></iframe>再次给你说一下,客户端的路径你是不能控制的 路径是可以由用户选择的! 只是一个导出按钮 通过程序将多个处理好的Excel 保存 不是给你说了吗,使用iframe,或者打包下载 public static bool ExportExcel(string strFileName, DataSet ds) { if (ds == null || ds.Tables.Count == 0) return false; Excel.Application appExcel = new Excel.Application(); Excel.Workbook workbookData; Excel.Worksheet worksheetData; // set culture to US System.Globalization.CultureInfo CurrentCI = System.Threading.Thread.CurrentThread.CurrentCulture; System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); workbookData = appExcel.Workbooks.Add(Missing.Value); int iSheet = 0; DataTable dt = new DataTable(); for (int k = 0; k< ds.Tables.Count; k++) { worksheetData = (Excel.Worksheet)workbookData.Worksheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value); dt = ds.Tables[k]; for (int i = 0; i < dt.Columns.Count; i++) { worksheetData.Cells[1, i + 1] = dt.Columns[i].ColumnName.Trim(); } iSheet += 1; Excel.Range xlRang = null; int iRowCount = dt.Rows.Count; int iParstedRow = 0, iCurrSize = 0; int iEachSize = 1000; // each time you int iColumnAccount = dt.Columns.Count; object[,] objVal = new object[iEachSize, iColumnAccount]; try { iCurrSize = iEachSize; while (iParstedRow < iRowCount) { if ((iRowCount - iParstedRow) < iEachSize) iCurrSize = iRowCount - iParstedRow; for (int i = 0; i < iCurrSize; i++) { for (int j = 0; j < iColumnAccount; j++) objVal[i, j] = dt.Rows[iParstedRow + i][j].ToString(); } // Get Save Range from Excel WorkSheet // such as A1 H10, means From A to H Columns, and 1 to 10 rows xlRang = worksheetData.get_Range("A" + ((int)(iParstedRow + 2)).ToString(), ((char)('A' + iColumnAccount - 1)).ToString() + (((int)(iParstedRow + iCurrSize + 1)).ToString())); xlRang.Value2 = objVal; iParstedRow = iParstedRow + iCurrSize; } System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRang); xlRang = null; } catch { return false; } } // return to previous culture System.Threading.Thread.CurrentThread.CurrentCulture = CurrentCI; workbookData.Saved = false; workbookData.SaveAs(strFileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value); appExcel.Quit(); return true; }//没有考虑一个sheet的列限制 asp.net页面间如何安全传递变量如ASP中的POST方式 怎么实现 语音邮件 动态给GridView添加行后保存问题! socket问题,高手请进 如何将Xml文件转换成.rar文件..........(等待) 请教在datagrid中超级链接列里面怎么写javascript?? TextBox中应用createRange和caretPos的问题。 问各位大侠 webForm下水晶报表 能实现套打否?? 寻找ASP.NET控件(100分赠送) 又一菜级问题(老问菜问题,自己都不好意思了) 如何防止无权限的地址跳转? jQuery Media Plugin 怎么用啊
<iframe src="d.aspx?file=1" style="display:none"></iframe>
<iframe src="d.aspx?file=2" style="display:none"></iframe>再次给你说一下,客户端的路径你是不能控制的
路径是可以由用户选择的! 只是一个导出按钮 通过程序将多个处理好的Excel 保存
{
if (ds == null || ds.Tables.Count == 0)
return false;
Excel.Application appExcel = new Excel.Application();
Excel.Workbook workbookData;
Excel.Worksheet worksheetData; // set culture to US
System.Globalization.CultureInfo CurrentCI = System.Threading.Thread.CurrentThread.CurrentCulture;
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
workbookData = appExcel.Workbooks.Add(Missing.Value); int iSheet = 0; DataTable dt = new DataTable(); for (int k = 0; k< ds.Tables.Count; k++)
{
worksheetData = (Excel.Worksheet)workbookData.Worksheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value);
dt = ds.Tables[k];
for (int i = 0; i < dt.Columns.Count; i++)
{
worksheetData.Cells[1, i + 1] = dt.Columns[i].ColumnName.Trim();
} iSheet += 1; Excel.Range xlRang = null;
int iRowCount = dt.Rows.Count;
int iParstedRow = 0, iCurrSize = 0;
int iEachSize = 1000; // each time you
int iColumnAccount = dt.Columns.Count; object[,] objVal = new object[iEachSize, iColumnAccount];
try
{
iCurrSize = iEachSize;
while (iParstedRow < iRowCount)
{
if ((iRowCount - iParstedRow) < iEachSize)
iCurrSize = iRowCount - iParstedRow;
for (int i = 0; i < iCurrSize; i++)
{
for (int j = 0; j < iColumnAccount; j++)
objVal[i, j] = dt.Rows[iParstedRow + i][j].ToString();
}
// Get Save Range from Excel WorkSheet
// such as A1 H10, means From A to H Columns, and 1 to 10 rows
xlRang = worksheetData.get_Range("A" + ((int)(iParstedRow + 2)).ToString(), ((char)('A' + iColumnAccount - 1)).ToString()
+ (((int)(iParstedRow + iCurrSize + 1)).ToString())); xlRang.Value2 = objVal;
iParstedRow = iParstedRow + iCurrSize;
}
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRang);
xlRang = null; }
catch
{
return false;
}
}
// return to previous culture
System.Threading.Thread.CurrentThread.CurrentCulture = CurrentCI; workbookData.Saved = false;
workbookData.SaveAs(strFileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value); appExcel.Quit(); return true;
}
//没有考虑一个sheet的列限制