这是一段js宏代码,它将excel表格转化为需要的格式

function transformAccountData() {
try {
// 获取当前工作簿
var workbook = Application.ActiveWorkbook;

// 获取源数据表
var sourceSheet = workbook.Sheets.Item("sheet1");
if (sourceSheet == null) {
alert("未找到源工作表");
return;
}

// 获取或创建目标表
var targetSheet;
try {
targetSheet = workbook.Sheets.Item("账号申请信息表");
} catch (e) {
targetSheet = workbook.Sheets.Add(null, workbook.Sheets(workbook.Sheets.Count));
targetSheet.Name = "账号申请信息表";
}

// 清空目标表(保留格式)
targetSheet.Cells.ClearContents();

// 写入目标表标题
var headers = ["序号", "姓名", "所属单位编码","所需开通权限","手机号", "开通账号"];

// 设置标题行格式
for (var h = 0; h < headers.length; h++) {
var cell = targetSheet.Cells(1, h+1);
cell.Value2 = headers[h];
cell.Interior.Color = RGB(91, 155, 213); // 蓝色背景
cell.Font.Color = RGB(0, 0, 0); // 白色文字
cell.Font.Bold = true;
cell.HorizontalAlignment = -4108; // 居中
cell.VerticalAlignment = -4108;
cell.Borders.LineStyle = 1; // 实线边框
cell.Borders.Weight = 2; // 细线
}

// 获取源数据最后一行
var lastRow = sourceSheet.Cells.Find("*", null, null, null, 1, 2).Row;
var sourceData = [];

// 逐行读取源数据(从第3行开始)
for (var i = 3; i <= lastRow; i++) {
var rowData = [];
for (var j = 1; j <= 11; j++) { // A-K列
var cellValue = sourceSheet.Cells(i, j).Value2;
rowData.push(cellValue != null ? cellValue : "");
}
sourceData.push(rowData);
}

var outputData = [];
var sequence = 1;

for (var i = 0; i < sourceData.length; i++) {
var row = sourceData[i];

// 获取字段(全部转为字符串)
var name = String(row[1] || "");
var orgCode = String(row[7] || "");
var phone = String(row[6] || "");
var pcAccount = String(row[8] || ""); // 补足8位
var iAccount = String(row[9] || "");
var accountScope = (row[10] || "").toString().trim();

// 规则判断
if (pcAccount !== iAccount && accountScope === "PC端和app端") {
outputData.push([sequence++, name, orgCode, "1,2", phone, pcAccount]);
outputData.push([sequence++, name, orgCode, "3", phone, iAccount]);
}
else if (pcAccount === iAccount && accountScope === "PC端和app端") {
outputData.push([sequence++, name, orgCode, "1,2,3", phone, pcAccount]);
}
else if (accountScope === "PC端") {
outputData.push([sequence++, name, orgCode, "1,2", phone, pcAccount]);
}
else if (accountScope === "app端") {
outputData.push([sequence++, name, orgCode, "3", phone, iAccount]);
}
}

// 写入目标表(带格式设置)
for (var j = 0; j < outputData.length; j++) {
var rowData = outputData[j];
var targetRow = j + 2;

for (var col = 1; col <= 6; col++) {
var cell = targetSheet.Cells(targetRow, col);

// 通用格式设置
cell.HorizontalAlignment = -4108; // 水平居中
cell.VerticalAlignment = -4108; // 垂直居中
cell.Borders.LineStyle = 1; // 实线边框
cell.Borders.Weight = 2; // 细线

// 对文本型列设置文本格式
if (col >= 2 && col <= 6) { // B-F列
cell.NumberFormat = "@";
}

// 写入数据
cell.Value2 = rowData[col-1];
}
}

// 调整列宽
targetSheet.Columns.AutoFit();

alert("数据转换完成!共转换 " + outputData.length + " 条记录。");

} catch (e) {
alert("发生错误: " + e.message + "\n行号: " + e.lineNumber);
}
}

// RGB颜色转换函数
function RGB(r, g, b) {
return r + (g << 8) + (b << 16);
}

 图片1

 

posted @ 2025-08-27 10:44  xiaobaitu88  阅读(6)  评论(0)    收藏  举报