Initial commit
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
|
||||
"github.comcom/xuri/excelize/v2"
|
||||
)
|
||||
|
||||
// ensureTemplateExists 检查模板文件是否存在,如果不存在则创建一个。
|
||||
func ensureTemplateExists(filename string, sheetName string, header string) {
|
||||
// 检查文件是否存在
|
||||
if _, err := os.Stat(filename); os.IsNotExist(err) {
|
||||
fmt.Printf("模板文件 '%s' 不存在,正在为您创建...\n", filename)
|
||||
f := excelize.NewFile()
|
||||
// 创建一个工作表
|
||||
_, err := f.NewSheet(sheetName)
|
||||
if err != nil {
|
||||
log.Fatalf("创建工作表失败: %v", err)
|
||||
}
|
||||
// 设置表头
|
||||
f.SetCellValue(sheetName, "A1", header)
|
||||
// 删除默认的 "Sheet1" (如果它不是我们想要的那个)
|
||||
if sheetName != "Sheet1" {
|
||||
f.DeleteSheet("Sheet1")
|
||||
}
|
||||
// 保存文件
|
||||
if err := f.SaveAs(filename); err != nil {
|
||||
log.Fatalf("保存模板文件失败: %v", err)
|
||||
}
|
||||
fmt.Printf("模板文件 '%s' 创建成功。\n", filename)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
// --- 配置 ---
|
||||
const (
|
||||
templateFile = "批量删除域名模板.xlsx" // 根据您的模板文件名修改
|
||||
outputFile = "output.xlsx" // 最终生成的输出文件名
|
||||
sheetName = "Sheet1" // Excel 工作表的名称,通常是 "Sheet1"
|
||||
headerText = "域名" // 图片中显示的表头
|
||||
targetSize = 6 * 1024 * 1024 // 目标文件大小: 6 MB
|
||||
batchSize = 5000 // 每次写入的域名数量(一个批次)
|
||||
)
|
||||
|
||||
// 确保模板文件存在
|
||||
ensureTemplateExists(templateFile, sheetName, headerText)
|
||||
|
||||
// 打开模板文件
|
||||
f, err := excelize.OpenFile(templateFile)
|
||||
if err != nil {
|
||||
log.Fatalf("打开模板文件失败: %v", err)
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
// 初始化计数器
|
||||
domainCounter := 1
|
||||
currentRow := 2 // 从第二行开始写入,因为第一行是表头
|
||||
|
||||
fmt.Println("开始生成 Excel 文件,目标大小: 6 MB...")
|
||||
|
||||
for {
|
||||
// 在内存中批量添加域名
|
||||
for i := 0; i < batchSize; i++ {
|
||||
cell := fmt.Sprintf("A%d", currentRow)
|
||||
domain := fmt.Sprintf("test%d.com", domainCounter)
|
||||
f.SetCellValue(sheetName, cell, domain)
|
||||
currentRow++
|
||||
domainCounter++
|
||||
}
|
||||
|
||||
// 保存文件到输出文件
|
||||
if err := f.SaveAs(outputFile); err != nil {
|
||||
log.Fatalf("保存文件失败: %v", err)
|
||||
}
|
||||
|
||||
// 获取文件信息以检查大小
|
||||
fileInfo, err := os.Stat(outputFile)
|
||||
if err != nil {
|
||||
log.Fatalf("获取文件状态失败: %v", err)
|
||||
}
|
||||
|
||||
currentSize := fileInfo.Size()
|
||||
currentSizeMB := float64(currentSize) / (1024 * 1024)
|
||||
|
||||
fmt.Printf("已写入 %d 个域名,当前文件大小: %.2f MB\n", domainCounter-1, currentSizeMB)
|
||||
|
||||
// 检查是否达到目标大小
|
||||
if currentSize >= targetSize {
|
||||
fmt.Println("\n-----------------------------------------")
|
||||
fmt.Printf("任务完成!\n")
|
||||
fmt.Printf("成功生成文件 '%s'。\n", outputFile)
|
||||
fmt.Printf("最终文件大小: %.2f MB\n", currentSizeMB)
|
||||
fmt.Printf("共写入 %d 个域名。\n", domainCounter-1)
|
||||
fmt.Println("-----------------------------------------")
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
Reference in New Issue
Block a user